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