1

ピラミッドがあるとしましょう...それを描く方法とピラミッド全体のテクスチャを設定する方法を知っていますが、壁ごとに異なるテクスチャを設定するにはどうすればよいですか?

GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());前にこれを追加してテクスチャを設定しましたGL11.glBegin(GL11.GL_TRIANGLES);

GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());ピラミッドの頂点座標を設定する3行ごとに追加してテクスチャをバインドしようとしましたGL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());GL11.glBegin(GL11.GL_TRIANGLES);GL11.glEnd();

編集

私はすべての壁を別々に描いて、それはうまくいきました、しかし私はそのように好きではありません...それは私にはトリッキーに見えます...それは私がやりたいことをする良い方法ですか?

4

2 に答える 2

1

最善の方法は、あなたがやったこと、それらを別々に描くことだと思います。通常、各「バッチ」が単一のマテリアルを参照するようにします。

本当に必要な場合は、4 つのテクスチャを 1 つのシートにパックし、各壁に固有のテクスチャ 座標を使用してその一部を選択させることができますが、パフォーマンスがあまりにも多くのバッチに悩まされていない限り、これはおそらく不必要な複雑さです.

于 2012-05-19T16:49:26.220 に答える
1

GLでこれを行う簡単な方法はないと思います。テクスチャを 1 つの大きな画像に結合し、テクスチャ座標を使用して適切なサブ画像を選択することをお勧めします。

たとえば、テクスチャリング ユニットを切り替えて、別のユニットで白いピクセルを使用する (または高度な GLSL を使用する) ことによって、限られた数のテクスチャで動作するようになったとしても、おそらくパフォーマンスに合わせてスケーリングされないでしょう: http://origin- developer.nvidia.com/docs/IO/8230/BatchBatchBatch.pdf

于 2012-05-19T16:52:26.313 に答える