我目前正在编写一个 3D 渲染器(为了好玩和研究),所以我需要一种将帧缓冲区绘制到窗口的方法。由于我在 CPU 上进行所有计算,因此绘图需要尽可能快。
我的目标之一是不使用现有的图形库 (OpenGL/DirectX),因此屏幕上的绘图是纯 Win32。在我的研究中,我发现了几种创建和绘制位图的方法,现在我正在寻找最好的方法。
我当前的实现使用使用创建的位图CreateDIBSection()
,使用BitBlt()
.
CreateDIBSection()
给我一个指向我的位图字节的指针,这样我就可以在不复制的情况下操作它。使用这种方法,我实现了大约 260 FPS 的更新速率(没有完成任何渲染)。这似乎有点慢,所以我正在寻找优化。
我读过一些关于如果您不使用与系统调色板相同的调色板创建位图的内容,则会完成一些缓慢的颜色转换。
如何确保我的 DIB 位图和窗口兼容?
有没有比我目前的实现更快的绘制位图的方法?
我也读过一些关于的东西DrawDibDraw()
,任何人都可以确认这更快吗?