サイズが 16x16x6 の GL_TEXTURE_3D があり、計算シェーダーにフロートが設定されており、フラグメント シェーダーでそれをサンプリングしようとしています。
フラグメント シェーダーで使用できるようにするために、描画呼び出しの直前に次のコードを用意しました。
//Set the active texture and bind it
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_3D, textureID);
//Add the sampler uniform
glUniform1i(glGetUniformLocation(textureID, "TextureSampler"), 0);
次に、フラグメント シェーダー自体で次のようにします。
uniform sampler3D TextureSampler;
次に、テクスチャが正しく通過したことをテストします。
vec4 test = texture(TextureSampler, ivec3(0,0,0));
color = vec4(1.0,0.0,0.0,1.0) * test.x; //or test.y, test.z, test.w
これに基づいて、すべてのテクセル値が(0.0,0.0,0.0,1.0)
これがなぜなのか理解できませんか?計算シェーダーで設定した値に基づいて(0,0,0)
値を調整(16.0,0.0,0.0,0.0)
することを期待します(16.0,16.0,16.0,16.0)
PS 値がテクスチャに正しく書き込まれていることは注目に値するかもしれませんglGetTexImage()