我想过滤一个纹理(没有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
然后将该层手动传递给片段着色器*。 –