我一直在开发一个小型应用程序,并且一直在使用 DirectX/3D 将纹理绘制到屏幕上(所有二维元素)。我发现,API 非常易于使用,并且可以使用 OOP 原则进行整合,但我不禁觉得在这么小的东西上使用 DirectX 简直是过分了。
不过,我似乎无法就一个好的替代方案达成共识。有什么建议么?
编辑:需要原生 alpha 混合和 PNG 文件支持。
Jengerer 充满了初恋
如果您需要 alpha 混合,则必须使用图形硬件;做到这一点的唯一好方法是使用类似于您现在的方式(DirectX 或 OpenGL)的 3D API。任何替代方案(GDI/+ 或者说,DirectDraw)都不会使用完整的图形硬件来加速混合,并且必须在 CPU 上执行它,从而大大降低了性能。
如前所述,Direct2D 也是一个选项——它在功能上是 Direct3D 之上的一层,支持更多的 2D 特定功能以及出色的文本支持。
Windows 包括一个开箱即用的。(GDI32.DLL)。可以挂钩到WM_PAINT
WindowProc 调用中的消息并用于BeginPaint()
开始绘图。Zetcode上提供了关于可以做什么的非常好的想法和基本教程。
我以前用过Gosu,用起来没问题。它被设计为更多地与 Ruby 一起使用,但对 C++ 来说还不错。我们在一个快速的横向卷轴游戏中使用了它,其中我们弄乱了 z-order 和 alpha 通道。这可能值得一试。