8

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

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

编辑:需要原生 alpha 混合和 PNG 文件支持。

Jengerer 充满了初恋

4

4 回答 4

5

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

于 2010-09-01T18:55:48.957 回答
5

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

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

于 2010-09-01T18:59:20.013 回答
3

Windows 包括一个开箱即用的。(GDI32.DLL)。可以挂钩到WM_PAINTWindowProc 调用中的消息并用于BeginPaint()开始绘图。Zetcode上提供了关于可以做什么的非常好的想法和基本教程。

于 2010-09-01T18:58:06.117 回答
1

我以前用过Gosu,用起来没问题。它被设计为更多地与 Ruby 一起使用,但对 C++ 来说还不错。我们在一个快速的横向卷轴游戏中使用了它,其中我们弄乱了 z-order 和 alpha 通道。这可能值得一试。

于 2010-09-01T22:28:45.430 回答