0

マルチテクスチャリングは、以前は簡単で簡単でした。テクスチャをバインドし、 を呼び出しglBeginてからレンダリングを行いますが、テクスチャごとglTexCoordに呼び出すのではありません。glMultiTexCoordその後、そのすべてが非推奨になりました。

私は今それを行う正しい方法を見つけようとして周りを見回していますが、公式のクロノスグループのソースとブログの両方から私が見つけたすべてのチュートリアルはすべて、すべてのテクスチャ座標の同じセットを使用することを前提としていますこれは非常に単純化された仮定であり、私のユース ケースには当てはまりません。

rBテクスチャ A とテクスチャ B があり、テクスチャ A のアルファ値をrect に使用して、テクスチャ B の色を rect にレンダリングするとします(簡単にするために、rA高さと幅は と同じです) rB、しかし同じ Left と Top の値ではありません)、非推奨の機能なしで OpenGL 3 を使用します。これを行う正しい方法は何ですか?

4

1 に答える 1

1

シェーダーでは、追加のテクスチャ座標セットと 2 番目のサンプラーを宣言 (および使用) するだけです。

vec4 sample1 = texture(texture1, texCoord1);
vec4 sample2 = texture(texture2, texCoord2);

モデルを指定するとき、texCoords の 2 番目のセットを属性に追加します。

glVertexAttribPointer(tex1Loc, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(texCoord1, Vertex));
glVertexAttribPointer(tex2LOC, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(texCoord2, Vertex));
于 2015-08-11T11:48:08.207 に答える