簡體   English   中英

透明紋理幀緩沖(OpenGL ES 2)

[英]Transparent texture framebuffer (OpenGL ES 2)

我是FBO的新手,這個問題讓我瘋了好幾個小時。 我有興趣找到我要求的解決方案,而不是替代方案。 這是在Android上。

我正在創建一個幀緩沖區,然后我在附加到它的紋理上繪制一個圓圈。 然后我將該紋理繪制到默認的幀緩沖區,就像它是常規紋理一樣。 一切都很棒,並按預期展示......

......除了紋理完全不透明這一事實,不僅僅是我畫圓圈的地方。 我希望所有其他區域都是透明的,只有紋理的圓形部分才可見。 更確切地說,我想用透明像素“填充”我的紋理,然后在我們的圓圈上繪制,然后將此紋理渲染到默認的幀緩沖區,並能夠看到它背后的內容。 我怎樣才能做到這一點? 它甚至可能嗎? 或者也許有一種方法可以保持我的紋理不透明,並告訴OpenGL不要渲染,比如黑色像素?

我發現了一個類似的問題 ,但是經過檢查的答案沒有幫助。 下面的評論建議使用glClear (我假設它指的是glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT) ),但是我在每個glBindFramebuffer之后都這樣glBindFramebuffer ,它仍然沒有做任何事情。 我還閱讀了關於啟用alpha混合的內容,因此我在每個glBindFramebuffer之后都glBindFramebufferglEnable(GL_BLEND)glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ,並且我的紋理保持不透明。

另一個答案表明它依賴於平台,因此我正在尋找Android解決方案。

嘗試glColorMask(TRUE,TRUE,TRUE,TRUE); glClearColorglClear之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM