是否可以使用指针直接写入(低级别)到窗口而不使用Bitblt?

时间:2010-12-25 02:08:43

标签: windows gdi

我写了一个立体滤镜,将两个图像混合成一个立体图像。这是一个快速的例程,一次只能处理一个像素。 现在我正在使用指针将每个计算出的像素输出到一个内存位图,然后将整个图像Bitblt输出到窗口上。

这对我来说似乎是多余的。我宁愿将每个像素直接复制到屏幕上,因为我的浮雕程序非常快。是否有可能绕过Bitblt,只需将指针直接指向Bitblt将其复制到的位置?

3 个答案:

答案 0 :(得分:1)

我确信这是可能的,但你真的真的不想这样做。一次绘制整个模式效率更高。

答案 1 :(得分:1)

您无法从Windows直接绘制到屏幕,因为显卡内存不一定按照任何合理的顺序进行映射。

快速闪烁到屏幕上。

请记住,不要在每个像素之后进行blt - 只有当你想要显示一个新结果时,即使这样做也没有必要比屏幕上的刷新更快 - 可能是60hz

答案 2 :(得分:1)

你正在寻找像OpenGL中的glMapBuffer,但直接进入屏幕。

但是,每像素写入GPU内存像素是您可以执行的较慢操作。如果您发送大量数据流,PCI的工作速度会更快。此外,如果您编写和读取数据,则会出现许多问题。像素布局也很重要(请参阅有关快速纹理转移的nvidia文档)。 Bitblt将以驱动程序优化的方式为您完成。