Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么';这是一个适用于Windows/C++;?_C++_Windows_Api_Directx_Drawing2d - Fatal编程技术网

C++ 什么';这是一个适用于Windows/C++;?

C++ 什么';这是一个适用于Windows/C++;?,c++,windows,api,directx,drawing2d,C++,Windows,Api,Directx,Drawing2d,我一直在开发一个小应用程序,我一直在使用DirectX/3D在屏幕上绘制纹理(所有二维元素)。我发现,API非常易于使用,并且可以使用OOP原则进行合并,但我忍不住觉得,在这么小的东西上使用DirectX简直是过火了 不过,我似乎无法就一个好的替代方案达成共识。有什么建议吗 编辑:需要本地alpha混合和PNG文件支持 有了很多初恋, Jenger如果您不需要XP支持,请使用。 否则,请使用 窗口包括一个开箱即用的窗口。(GDI32.DLL)。可以挂接WindowProc调用中的消息并使用它开始

我一直在开发一个小应用程序,我一直在使用DirectX/3D在屏幕上绘制纹理(所有二维元素)。我发现,API非常易于使用,并且可以使用OOP原则进行合并,但我忍不住觉得,在这么小的东西上使用DirectX简直是过火了

不过,我似乎无法就一个好的替代方案达成共识。有什么建议吗

编辑:需要本地alpha混合和PNG文件支持

有了很多初恋,
Jenger

如果您不需要XP支持,请使用。

否则,请使用

窗口包括一个开箱即用的窗口。(GDI32.DLL)。可以挂接WindowProc调用中的消息并使用它开始绘图。关于可以做什么的一个非常好的想法,上有一个基本教程。

如果你需要alpha混合,你必须使用图形硬件;实现这一点的唯一好方法是使用类似于现在的3D API(DirectX或OpenGL)。任何替代方案(GDI/+或DirectDraw)都不会使用完整的图形硬件来加速混合,必须在CPU上执行,从而大大降低性能


如前所述,Direct2D也是一个选项——它在功能上是Direct3D之上的一个层,支持更多的2D特定功能以及出色的文本支持。

我过去使用过,可以使用它。它被设计用于更多的露比,但它不是坏的C++。我们在一个快速侧滚游戏中使用了它,在那里我们搞乱了z顺序和alpha通道。这可能值得一看。

就DirectX/OpenGL而言,您有什么建议?我知道这在编程界是一个相当热门的话题,但就性能和实用性而言,你认为哪一个是更好的选择?你特别抱怨DirectX感觉像是杀戮过度;OpenGL的API上市时间要快得多,可以让您顺利上市。然而,由于OpenGL是用C语言设计的,因此您将失去DirectX OO设计的良好封装,必须处理OpenGL状态机。这两个应用程序的性能几乎相同,所以请选择一个提供了清晰易懂的API的应用程序。我所说的“过度杀戮”是指在性能方面,它似乎比这样一个小型应用程序所使用的资源要多得多。我发现即使是最小的DirectX应用程序也有相当大的负载。谢谢你的回复,这真的很有帮助!考虑到你在demoscene中看到的大多数4K演示都使用D3D,我不会说对于一个简单的2D应用来说这是疯狂的过度杀戮。D3DX还支持
.bmp
.dds
.dib
.hdr
.jpg
.pfm
.png
.ppm
.tga
文件格式。