2

Texture Array 内に格納されている Texture2D Atlas の一部のみを GLSL Sampler 経由で描画するにはどうすればよいですか? たとえば、Texture アトラスがあり、それらを (同じサイズの他のアトラスと一緒に) Texture2D Array 内に配置します。(glTexSubImage3D)

ここに画像の説明を入力

さて、その場合、私のサンプラーはどのように見えるでしょうか?

https://www.opengl.org/wiki/Array_Texture

https://www.opengl.org/wiki/Sampler_(GLSL)

配列からテクスチャ全体を選択して適用する方法の例のみを見つけましたが、配列内にテクスチャアトラスを保存する場合は関係ありません。

4

1 に答える 1

2

幸いなことに、これは私が最近取り組んでいる領域であり、フラグメント シェーダーで 2D テクスチャ配列を使用するには、次のようなことを行うことができます。

#version 330

uniform sampler2DArray tex;

flat in uint fragLayer;
in vec2 fragTexCoord;

out vec4 colour;

void main()
{
    colour = texture( tex, vec3( fragTexCoord, fragLayer ) );
}

したがって、テクスチャ レイヤーは、テクスチャ配列内の個々のピクセルにアクセスするために使用される 3D ベクトルの 3 番目の要素です。

glTexSubImage3dまた、すべてのタイルがグリッドではなく垂直線内にある場合にのみ、生の画像で単純な (そして最も単純な) ストレートを使用することにも注意してください。

于 2016-11-12T12:02:35.703 に答える