![](/img/trans.png)
[英]OpenGL multisample integer texture attached to framebuffer doesn't resolve correctly
[英]Opengl and Webgl: sampling from a texture attached to current framebuffer
據我了解,這種配置沒有環回。
但是有一個。
在GL 4.5之前的版本(包括WebGL)中,只要您從當前連接到幀緩沖區的紋理讀取內容,就會發生反饋循環 。 如果您現在不寫它,沒關系。 您現在不能寫它沒關系。 只要將它附加到幀緩沖區,就可以通過對其進行讀取獲得未定義的行為(除非它們是從未附加的mipmap級別讀取的)。
在post-GL 4.5 ( 不包括WebGL)中或具有紋理屏障擴展的情況下,此操作很輕松。 但是還不足以解決您的問題。 當您嘗試從仍附加到幀緩沖區的圖像中讀取上一次調用中寫入的像素時,仍會觸發UB。
因此,您必須更改FBO以便不再附加圖像,或者必須發出紋理屏障(如果可以訪問4.5 / ARB / NV_texture_barrier,則可以在桌面GL上執行此操作)。
在WebGL1和WebGL2中這都是非法的。 如果存在反饋循環,則需要WebGL生成INVALID_OPERATION
錯誤。
6.25紋理和幀緩沖區之間的反饋循環
在OpenGL ES 2.0 API中,可以進行寫入和讀取相同紋理的調用,從而創建反饋循環。 它指定存在這些反饋循環的位置會導致未定義的行為。
在WebGL API中,將導致此類反饋循環(根據OpenGL ES 2.0規范中的定義)的此類操作將生成INVALID_OPERATION錯誤。
正如您所指出的,聽起來您的情況似乎沒有實際的反饋回路,但是正如Nicol根據規范指出的那樣,仍然存在。 Chrome和Firefox似乎都是一個錯誤 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.