Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl es 在OpenGL ES 3.x中使用Sampler3D读取3D纹理_Opengl Es_3d Texture_Opengl Es 3.1 - Fatal编程技术网

Opengl es 在OpenGL ES 3.x中使用Sampler3D读取3D纹理

Opengl es 在OpenGL ES 3.x中使用Sampler3D读取3D纹理,opengl-es,3d-texture,opengl-es-3.1,Opengl Es,3d Texture,Opengl Es 3.1,我正在使用OpenGL ES 3.2读取片段着色器中的3D纹理,并将该值写入FBO。然后,我使用glReadPixels读取FBO附件,并打印出获得的值 我随附取样器,如下所示: GLuint texLoc = glGetUniformLocation(shader_program_new, "input_tex"); glUniform1i(texLoc, 0); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_3D, textur

我正在使用OpenGL ES 3.2读取片段着色器中的3D纹理,并将该值写入FBO。然后,我使用glReadPixels读取FBO附件,并打印出获得的值

我随附取样器,如下所示:

GLuint texLoc = glGetUniformLocation(shader_program_new, "input_tex");
glUniform1i(texLoc, 0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_3D, texture_output);
在着色器内部,我从纹理中读取如下内容:

#version 300 es
precision highp float;
precision highp sampler3D;
    
uniform sampler3D input_tex;
in vec3 tex_pos;
out vec4 fragmentColor;
    
void main() {
    fragmentColor = texture(input_tex, vec3(0.0, 0.0, 0.0)); // nonzero z co-ordinate doesn't work    
}
从纹理读取时,我只能从z坐标为0的值读取。从任何其他深度读取值都会产生垃圾值或NaN


3D纹理不应该允许我使用(x,y,z)值作为纹理坐标,其中x,y和甚至z可以在0.0和1.0之间

让我猜猜:您没有正确初始化纹理。

请显示纹理创建代码。

这很可能是因为3D纹理未绑定为分层

看看这个: