在Win32中将颜色数据渲染到窗口

3
所以我能够创建一个颜色数据数组(在您想知道的情况下投影3D模型),但是我需要在Win32窗口中显示它们。我知道我可以逐个像素地绘制它,但那真的很慢。我知道如果我要使用双缓冲区,我可能需要BitBlt();无论如何都需要它。我已经看到了如何将.bmp呈现到窗口中,但我没有.bmp文件。我想我可以制作一个.bmp文件,但我想追求速度。

有没有办法直接(可能不是直接的,但仍然很快)访问hDC的像素数据?图形库是如何快速处理的?


1
为什么不看一下SDL呢?只需搜索所需部分的源代码即可。 - Falcon
2
考虑将此问题迁移到 Stack Overflow。 - Lior Kogan
2个回答

2

要将缓冲区复制到DC中,您应该构造一个BITMAPINFO,然后使用屏幕hDC、指向缓冲区的指针和构造的BITMAPINFO调用SetDIBitsToDevice()。

您可以在这里找到双缓冲的良好起点。


如果颜色数据数组的像素格式可以用BITMAPINFO表示,那么这是最快的方法。如果颜色数据采用不寻常的格式(例如浮点值或具有奇怪的对齐方式),则可能需要制作一个中间副本。 - Adrian McCarthy

0

将图像渲染到内存DC(这样可以更快地进行逐像素访问),然后将其复制到窗口DC。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接