在Windows上混合使用OpenGL和GDI

时间:2009-01-05 17:42:59

标签: windows opengl gdi

我正试图找到一种在Windows中混合使用OpenGL渲染和GDI的方法。以前我一直把我的OpenGL内容渲染成一个帧缓冲对象,提取它,然后将它blitting到windows GDI图形上下文中,然后在顶部绘制我的GDI内容。这实际上削弱了帧速率。

我想与我现在正在做的相反,所以我的OpenGL渲染直接完成到窗口,然后我将GDI的东西渲染到一个位图,然后上传到纹理然后使用四边形重叠。 GDI的东西并没有那么多变化所以我不需要每帧都重绘它,我可以缓存纹理。

我几乎可以使它工作,问题是我似乎无法从GDI位图中获取正确的alpha值,因此文本和行会得到可怕的锯齿。

有没有人有任何有用的资源来解决这个问题?是否有可能让GDI或GDI +以我需要的方式写入alpha通道?

3 个答案:

答案 0 :(得分:2)

我认为如果你只使用原始OpenGL渲染而不是GDI会更容易。只需创建一些包装函数并调用它们而不是GDI。

答案 1 :(得分:2)

真的有必要吗?您应该能够使用GDI函数在与OpenGL相同的设备上下文中进行绘制。

答案 2 :(得分:0)

如何使用模板印刷。在模板缓冲区中复制纹理。使用GL_NOTEQUAL作为测试函数,其参考值等于纹理的背景值。首先渲染OpenGL内容,然后启用模板,然后渲染纹理矩形。

您不指定这是2D还是3D问题。 Jaggies可能是3D世界中的一个深度问题,其中一切都在同一个平面上。如果您在3D中工作,请确保纹理矩形位于其他所有内容之前或修改z缓冲区。