windows - OpenGL获取背景像素信息

标签 windows macos cocoa opengl

我有一个带有完全透明窗口的 OpenGL 应用程序,我需要根据背景在其中绘制像素透明度的图片。有没有办法获取透明窗口下方的背景像素数据(例如壁纸、桌面、另一个窗口等),以便我可以动态更改着色器中的像素?

现在我有这样的代码

 glEnable(GL_BLEND);
 glBlendFunc(GL_SRC_COLOR, GL_DST_COLOR);
 glClearColor(1.0, 0, 0, 1.0);
 glClear(GL_COLOR_BUFFER_BIT);
 [self.shader useShader];
 [self drawTriangle];

useShader 只是调用 glUseProgram 过程,drawTriangle 只是绘制一个测试三角形。

着色器是:

#version 120

void main()
{
    gl_FragColor = gl_SecondaryColor + vec4(0.0, 1.0, 0.0, 0.0);
}

因此,如果我使用 (1.0, 0, 0, 1.0) 清除窗口,我会按预期得到黄色三角形,但是当我切换到 (0, 0, 0, 0) 时,它会变成绿色。有没有办法获取底色数据?

最佳答案

Is there any way of getting background pixel data that are BELOW my transparent window

仅使用 OpenGL?不。事实上,您甚至无法在着色器中读回目标帧缓冲区像素。

您必须使用操作特定函数来检索窗口下方的屏幕内容作为图像,将其加载到纹理中并将其传递给渲染。

关于windows - OpenGL获取背景像素信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22509681/

相关文章:

cocoa - NSWindow 移动 CGRect

objective-c - 从KVO中检索 `change`字典中的信息

objective-c - NSViewController New 与 InitWithNibName 问题

android - 在开发 Android 应用程序时使用 Linux 操作系统重要吗?

windows - Windows 内核中的 free/malloc 函数

python - 如何在Python中列出远程Windows主机共享目录?

java - 无法从 pom 获取 <systemPropertyVariables> 变量值

excel - Excel 2011 for Mac 上的 DATEVALUE 函数

ios - native 从 UIImage 扫描条形码(即不使用 ZBar)

python - 为什么 easy_install 可以正确修改 Python 模块加载路径,而 pip 和 .tar.gz 源却不能?