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, 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 の間である可能性があります。

4

2 に答える 2

1

推測させてください: テクスチャを正しく初期化していません。
テクスチャ作成コードを見せてください。

于 2018-12-06T06:11:44.547 に答える