我想過濾一個紋理(沒有mipmapping),並將過濾後的關卡寫入3D紋理。我已經創建了一個三維紋理與下面的代碼:OpenGL Texture3D FragmentShader寫入圖層
glGenTextures(1, &outTexture);
glBindTexture(GL_TEXTURE_3D, outTexture);
glTexParameterf(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA8, width, height, layer, 0, GL_RGBA, GL_INT, 0);
glBindTexture(GL_TEXTURE_3D, 0);
,我使我的模型,像這樣:
glFramebufferTexture3D(GL_FRAMEBUFFER, attachment, GL_TEXTURE_3D, outTexture, 0, layer);
entity.render();
是有一個片段着色器寫入到多層在同一種方式時間和知道你在哪一層?像這樣?
out_color[layer] = vec4(r,g,b,a);
PS:我需要知道在片段着色器,其層(一些&取悅沒有gl_Layer濾波東西...只能在OpenGL的4使用,並且我只能使用OpenGL 3)...餘可以將它寫入一個制服並渲染多次,但是如果有一種方法可以用一次傳遞......這將是很好的:)
「*沒有gl_Layer ......只能在使用OpenGL 4和我只能使用OpenGL 3 *「嗯,[分層渲染](https://www.opengl.org/wiki/Layered_Rendering)不需要OpenGL 4.x. –
但在片段着色器中OpenGL 4是必需的,正如我所說的,我需要知道在哪一層我是在片段着色器 – TreCore
然後將該層手動傳遞給片段着色器*。 –