0

デプステクスチャを実装し、2つの異なるドライバーで異なる出力を取得しました。フラグメントシェーダーのtexture()ですべてのチャネルを読み取っています:

“vec4 color = texelFetch(tk_diffuseMap, ivec3(tmp), i);” 

この場合、AとBにそれぞれ赤と灰色の画像が表示されます。赤のチャネルを読み取り、それを4つのチャネルすべてに複製すると、Aに次のような灰色の画像が表示されます。

“vec4 color = vec4(texelFetch(tk_diffuseMap, ivec3(tmp), i).x)”. 

どちらが正しいですか? ここに画像の説明を入力してください

ここに画像の説明を入力してください

4

1 に答える 1

3

他の3つのチャネルをまったく見てはいけないので、どちらが正しいかは関係ありません。奥行きのあるテクスチャです。最初のチャネルは1つだけです。それはあなたが触れなければならない唯一のものです。OpenGLが他の値を定義したとしても、気にしないので、関係のないデフォルト値になります。深さが必要だったので、深さ以外の値を見るのをやめます。

ただし、仕様の回答が必要な場合は、GL_REDテクスチャから取得するのと同じものを取得する必要があります。緑と青の場合は0、アルファの場合は1です。

于 2013-02-27T12:17:33.277 に答える