我正在编写一个简单的游戏。我的图形代码每帧运行一次(大约每秒30次),并将RGB数据写入一个具有640 * 480 = 307200个条目的数组中。
我创建了一个大小为640 x 480像素的客户区域为640 x 480像素的Win32窗口。怎样才能最快地在空白窗口内显示我的RGB数据?
窗口需要每帧更新,因此我需要避免闪烁。我应该使用GDI吗?还是可以使用不同库(例如DirectDraw)更快的方法?
编辑:
感谢所有回复。首先,让我排除Direct2D作为选择 - 我需要支持Windows XP。其次,由于我有3D背景,所以Yann Ramin和Ben Voigtto建议的方法 - 使用Direct3D/OpenGL和单个纹理四边形 - 是我过去一直采用的方法。
但是,我很想知道2D API是否是更好的解决方案。由于没有确定的答案,我组织了一个测试程序。该代码仅以尽可能快的速度重复显示帧缓冲区。
我已经发布了我的结果,以便作为这个后续问题的一部分。
我创建了一个大小为640 x 480像素的客户区域为640 x 480像素的Win32窗口。怎样才能最快地在空白窗口内显示我的RGB数据?
窗口需要每帧更新,因此我需要避免闪烁。我应该使用GDI吗?还是可以使用不同库(例如DirectDraw)更快的方法?
编辑:
感谢所有回复。首先,让我排除Direct2D作为选择 - 我需要支持Windows XP。其次,由于我有3D背景,所以Yann Ramin和Ben Voigtto建议的方法 - 使用Direct3D/OpenGL和单个纹理四边形 - 是我过去一直采用的方法。
但是,我很想知道2D API是否是更好的解决方案。由于没有确定的答案,我组织了一个测试程序。该代码仅以尽可能快的速度重复显示帧缓冲区。
我已经发布了我的结果,以便作为这个后续问题的一部分。
SetDIBits
并没жңүзӣҙжҺҘз»ҳеҲ¶еҲ°зӘ—еҸЈдёҠпјҢжҲ‘и®ӨдёәдҪ йңҖиҰҒеңЁд№ӢеҗҺдҪҝз”ЁBitBlt
гҖӮ - Ben VoigtSetDIBitsToDevice
。 - casablanca