我一直在研究一个小应用程序,我一直在使用DirectX / 3D在屏幕上绘制纹理(所有二维元素)。我发现,API很容易使用并且使用OOP原则进行合并,但我不禁觉得在这个小的东西上使用DirectX是疯狂的过度杀戮。
但是,我似乎无法就一个好的选择找到共识。有什么建议吗?编辑:必须使用原生Alpha混合和PNG文件支持。
有很多先发制人的爱, Jengerer
答案 0 :(得分:5)
答案 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通道混淆。可能值得一试。