我一直在研究一个小型应用程序,并且一直在使用DirectX/3D将纹理绘制到屏幕上(所有二维元素)。我发现,API非常易于使用,并且可以使用OOP原理进行整合,但是我不禁会感觉到在这个小的东西上使用DirectX是疯狂的。

不过,我似乎在一个很好的替代方案上找到共识。有什么建议么?

编辑: 本机alpha融合和PNG文件支持是必要的。

Jengerer有很多第一阶段的爱

有帮助吗?

解决方案

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

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

其他提示

如果您不需要XP支持,请使用 direct2d.
否则,请使用 GDI+.

Windows包括一个开箱即用。 (gdi32.dll)。可以挂在 WM_PAINT WindowProc通话中的消息和使用 BeginPaint() 开始绘画。关于可以做什么和基本教程的一个很好的主意 ZetCode.

我用过 gosu 过去,与之合作。它被设计为与Ruby一起使用,但对于C ++来说还不错。我们在快速的侧面滚动器游戏中使用了它,在那里我们与z-order和alpha频道混在一起。可能值得退房。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top