簡體   English   中英

OpenGL 4.2使用與圖像和采樣器相同的紋理

[英]OpenGL 4.2 use same texture as image and as sampler

使用與image2D和sampler2D相同的紋理是否合法(並且定義明確)?

當前,我在GLSL着色器中使用imageLoad()和imageStore()從image2D寫入和加載。 但是,我也想從某些紋理的mipmap級別讀取(而不是寫入),但是imageLoad不支持此功能(我想我必須將每個mipMap級別綁定為一個單獨的image2D,但是可用圖像單元的數量卻是相當有限)。 所以我的問題是,是否可以將與image2D相同的紋理用作imageStore()以及與textureLod()一起使用的sampler2D?

法律? 是。 定義明確? 這取決於您對他們的處理方式。

您說要寫入圖像,然后從紋理中采樣mipmap。 您是否從編寫的相同Mipmap中采樣? 如果是這樣,那將是一個問題。 紋理訪問不需要是coherant ,因此不能保證這會起作用。 在寫入時間和采樣時間之間沒有明確的CPU glMemoryBarrier調用。 而且由於它需要CPU干預,因此無法在同一着色器中完成。

如果您提供保護以防止從您寫入的mipmap中采樣(“您”,我的意思是“您正在使用的每個着色器調用”),那么一切都應該很好。 使用textureLod或設置紋理的BASE_LEVEL或類似的東西都可以。

暫無
暫無

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

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