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

Posted

技术标签:

【中文标题】在win32中绘制像素的最快方法是啥【英文标题】:what is the fastest way to draw pixel in win32在win32中绘制像素的最快方法是什么 【发布时间】:2013-04-17 13:51:18 【问题描述】:

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

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

我知道有办法做到这一点, OpenGL、Direct3D、gdi、 也许他们对于这个项目来说太“先进”了, 在 win32 上将像素绘制到后台缓冲区的直接(或最快)方法是什么?

【问题讨论】:

【参考方案1】:

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

【讨论】:

在这种情况下,您需要使用 OpenGL 或 DirectX。 DirectX 对您来说可能更容易上手,但我个人更喜欢 OpenGL。

以上是关于在win32中绘制像素的最快方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL:绘制二维图像的最快方法

计算 32 次方对数的最快方法是啥?

win32-UpdateLayeredWindow

如何在 C++ 中同时写入文件(换句话说,写入文件的最快方法是啥)

使用 OpenGL ES 2.0 传输纹理的最快方法是啥?

从 Java 中读取 System.in 的最快方法是啥?