[英]Transparent texture framebuffer (OpenGL ES 2)
我是FBO的新手,這個問題讓我瘋了好幾個小時。 我有興趣找到我要求的解決方案,而不是替代方案。 這是在Android上。
我正在創建一個幀緩沖區,然后我在附加到它的紋理上繪制一個圓圈。 然后我將該紋理繪制到默認的幀緩沖區,就像它是常規紋理一樣。 一切都很棒,並按預期展示......
......除了紋理完全不透明這一事實,不僅僅是我畫圓圈的地方。 我希望所有其他區域都是透明的,只有紋理的圓形部分才可見。 更確切地說,我想用透明像素“填充”我的紋理,然后在我們的圓圈上繪制,然后將此紋理渲染到默認的幀緩沖區,並能夠看到它背后的內容。 我怎樣才能做到這一點? 它甚至可能嗎? 或者也許有一種方法可以保持我的紋理不透明,並告訴OpenGL不要渲染,比如黑色像素?
我發現了一個類似的問題 ,但是經過檢查的答案沒有幫助。 下面的評論建議使用glClear
(我假設它指的是glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT)
),但是我在每個glBindFramebuffer
之后都這樣glBindFramebuffer
,它仍然沒有做任何事情。 我還閱讀了關於啟用alpha混合的內容,因此我在每個glBindFramebuffer
之后都glBindFramebuffer
了glEnable(GL_BLEND)
和glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
,並且我的紋理保持不透明。
另一個答案表明它依賴於平台,因此我正在尋找Android解決方案。
嘗試glColorMask(TRUE,TRUE,TRUE,TRUE); 在glClearColor
和glClear
之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.