我正在写一个简单的软件渲染器, 加载3d模型,处理顶点,光栅化,纹理,照明, 所有这一切,都完成了。 我使用SDL(不使用OpenGL模式)在其SDL_Surface上绘制像素, 并调用SDL_Flip,因此会出现一帧。
由于某种原因,我现在不想使用SDL, 我只需要一个双缓冲区来绘制像素。
我知道在某种程度上这样做, OpenGL,Direct3D,gdi, 也许他们也是"先进的"对于这个项目, 在win32上绘制像素到后缓冲区的直接(或最快)方法是什么?
答案 0 :(得分:2)
我建议使用图形API(OpenGL或Direct3D),但GDI是最简单的选择。您可以使用CreateDIBSection
函数创建DIB(设备无关位图),该函数返回指向位图内存的指针。然后,您可以随意修改位图的像素,并将其绘制到窗口的客户区。请参阅Charles Petzold的 Programming Windows (5th)第15章,了解该技术的源代码和解释。