作爲實驗,我決定嘗試僅使用圖像API渲染紋理。起初結果顯然是錯誤的,因爲紋理寫入發生在深度測試之前。所以我啓用了early_fragment_tests
,雖然我已經介紹了這種類型的用例,但現在我得到了一種奇怪的閃爍效果,看起來像Z-fighting,這似乎很奇怪,因爲它應該執行相同的深度測試定期渲染。使用圖像API渲染到紋理(無Framebuffer)
無論如何,我已經包含了一個問題的形象,我很好奇,如果任何人有解釋發生了什麼,以及爲什麼這不起作用。它可以工作嗎?
這裏有一個最小的再生
#version 420
in vec3 normal;
layout(binding = 0) writeonly uniform image2D outputTex;
void main()
{
vec4 fragColor = vec4(normal, 1);
imageStore(outputTex, ivec2(gl_FragCoord.xy), fragColor);
}
你在說什麼「圖像API」?另外,添加一些代碼會有所幫助。 – 2013-03-28 00:29:03
'ARB_shader_image_load_store' – ragnar 2013-03-28 04:22:44
所以...你的代碼是什麼樣的?有許多方法不正確地使用圖像加載/存儲操作,並且沒有辦法知道在沒有看到代碼的情況下你做了哪些操作。 – 2013-03-28 04:33:15