在win32中绘制像素的最快方法是什么

时间:2013-04-17 13:51:19

标签: c++ winapi 3d renderer doublebuffered

我正在写一个简单的软件渲染器, 加载3d模型,处理顶点,光栅化,纹理,照明, 所有这一切,都完成了。 我使用SDL(不使用OpenGL模式)在其SDL_Surface上绘制像素, 并调用SDL_Flip,因此会出现一帧。

由于某种原因,我现在不想使用SDL, 我只需要一个双缓冲区来绘制像素。

我知道在某种程度上这样做, OpenGL,Direct3D,gdi, 也许他们也是"先进的"对于这个项目, 在win32上绘制像素到后缓冲区的直接(或最快)方法是什么?

1 个答案:

答案 0 :(得分:2)

我建议使用图形API(OpenGL或Direct3D),但GDI是最简单的选择。您可以使用CreateDIBSection函数创建DIB(设备无关位图),该函数返回指向位图内存的指针。然后,您可以随意修改位图的像素,并将其绘制到窗口的客户区。请参阅Charles Petzold的 Programming Windows (5th)第15章,了解该技术的源代码和解释。