[英]How to make the background transparent in fullscreen mode (in OpenGL)?
[英]OpenGL getting background pixels info
我有一個具有完全透明窗口的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)時,它將變為綠色。 有什么方法可以獲取底色數據嗎?
有什么方法可以獲取透明窗口下方的背景像素數據
僅使用OpenGL? 不。實際上,您甚至無法在着色器中讀回目標幀緩沖像素。
您必須使用特定於操作的功能來將窗口下方的屏幕內容作為圖像檢索,加載到紋理中並將其傳遞給渲染。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.