我目前正在编写一个简单的游戏。我的图形代码每帧运行一次(大约每秒 30 次),并将 RGB 数据写入具有 640 * 480 = 307200 个条目的数组。
我创建了一个 Win32 窗口,其客户区的大小正好为 640 x 480 像素。在原本为空的窗口中显示我的 RGB 数据的最快方法是什么?
窗口需要每帧更新,所以我需要避免闪烁。我应该为此使用 GDI 吗?或者是否有更快的方法使用不同的库——比如 DirectDraw?
编辑:
感谢所有的答复。首先,让我排除 Direct2D 作为选项 - 我需要支持 Windows XP。其次,我有 3D 背景,所以 Yann Ramin 和 Ben Voigtto 建议的方法 - 使用 Direct3D/OpenGL 和单个纹理四边形 - 是我过去一直这样做的方法。
但是,我很想知道 2D API 是否会是更好的解决方案。由于没有明确的答案,我整理了一个测试程序。该代码只是尽可能快地在屏幕上重复显示一个帧缓冲区。
我已经发布了我的结果作为这个后续问题的一部分。