シェーダーでテクスチャ バッファーから vec4 値を読み取る作業コードがあります。
クライアント側では、変位ベクトルのバッファーを作成します。
vec4 vector1 : vec4(x1, y1, z1, w1);
vec4 vector2 : vec4(x2, y2, z2, w2);
vec4 vector3 : vec4(x3, y3, z3, w3);
..
次に、vector1、vector2、vector3... を含む頂点バッファーを作成します。
次に、テクスチャを作成し、上記のバッファを次のようにバインドします。
glTexBuffer(GL_TEXTURE_BUFFER, GL_RGBA32F, bufferID);
x1、y1、z1、w1 などはそれぞれ float であるため、GL_RGBA32F を選択しました。
シェーダーでは、次を使用して個々のベクトルをフェッチできます。
vec4 vector1 = texelFetch(samplerObj, 0);
vec4 vector2 = texelFetch(samplerObj, 1);
.
.
しかし、ここで、私の変位ベクトルが vec4 ではなく、単一の整数であるとします。すなわち
int vector1 = x1; //(int is 32 bit unsigned)
int vector2 = x2; //(int is 32 bit unsigned)
対応する internalFormat がどうなるか教えてください。それは...ですか
glTexBuffer(GL_TEXTURE_BUFFER, GL_R32UI, bufferID);
また、シェーダーで texelFetch を使用して値をフェッチするにはどうすればよいですか? それは...ですか
int vector1 = texelFetch(samplerObj, 0);
また
int vector1 = texelFetch(samplerObj, 0).r ?
texelFetch は 4 つのコンポーネントを持つテクセルを返す必要があるため、混乱しています。結果の赤のコンポーネントを使用する必要がありますか?