有关OpenGL设置和在窗口中绘制遮罩的问题

有关OpenGL设置和在窗口中绘制遮罩的问题,opengl,settings,masking,Opengl,Settings,Masking,我想知道OpenGL渲染设置,让程序在屏幕上具有特定颜色代码(屏幕级缓冲区?)的任何窗口顶部渲染OpenGL 也就是说,VLC Media Player和Media Player Classic都有渲染模式,允许您全屏播放,然后最小化播放器,但通过允许特定颜色充当透明遮罩来保持观看媒体。例如,您可以将终端应用程序的背景颜色设置为0x000010(VLC为0x000001,MPC为0x00001),然后您可以使用文本在媒体上键入(因为它是原始颜色)。当你尝试做一个“打印屏幕”时,你得到的只是遮罩的

我想知道OpenGL渲染设置,让程序在屏幕上具有特定颜色代码(屏幕级缓冲区?)的任何窗口顶部渲染OpenGL

也就是说,VLC Media Player和Media Player Classic都有渲染模式,允许您全屏播放,然后最小化播放器,但通过允许特定颜色充当透明遮罩来保持观看媒体。例如,您可以将终端应用程序的背景颜色设置为0x000010(VLC为0x000001,MPC为0x00001),然后您可以使用文本在媒体上键入(因为它是原始颜色)。当你尝试做一个“打印屏幕”时,你得到的只是遮罩的颜色,然而,这是一个可以接受的副作用


有没有可能在具有正确设置和硬件的任何OpenGL应用程序中也实现这一点?如果是这样的话,为了进一步研究它,这种效果的设置或至少术语是什么?

您试图实现的被称为“”。你可以试试。如果我没记错的话,DirectX SDK中也有一个教程


如果需要使用OpenGL,则需要执行屏幕外渲染(使用FBO或p-buffer),使用glReadPixels()读取结果,并使用overlay进行显示。

以澄清我试图实现的目标。我想在其他窗口后面渲染OpenGL,但我可以在前景窗口中设置一个颜色代码来显示下面的OpenGL。如果使用图形上下文提供的掩码在硬件中渲染OpenGL以告知OpenGL在何处绘制,则可以执行此操作。在所有窗口上渲染OpenGL: