什么是适用于Windows / C ++的优秀2D图形绘制API?

时间:2010-09-01 18:51:38

标签: c++ windows api directx drawing2d

我一直在研究一个小应用程序,我一直在使用DirectX / 3D在屏幕上绘制纹理(所有二维元素)。我发现,API很容易使用并且使用OOP原则进行合并,但我不禁觉得在这个小的东西上使用DirectX是疯狂的过度杀戮。

但是,我似乎无法就一个好的选择找到共识。有什么建议吗?

编辑:必须使用原生Alpha混合和PNG文件支持。

有很多先发制人的爱, Jengerer

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

Windows包含一个开箱即用的功能。 (GDI32.DLL)。可以在WindowProc调用中挂钩WM_PAINT消息并使用BeginPaint()开始绘图。 Zetcode上有一个关于可以做什么和基本教程的非常好的想法。

答案 3 :(得分:1)

我过去曾使用Gosu,并且可以使用它。它被设计为更多地用于Ruby,但它对C ++来说并不坏。我们在快速侧滚动游戏中使用它,在那里我们与z顺序和alpha通道混淆。可能值得一试。