2012-02-15 8 views
0

私はBlender 3Dからインポートしたシンプルなキューブを持っています。この立方体には3つの異なる素材があります。イエロー、ピンク、ブルー。opengl es 1.1:1つのオブジェクトに複数のマテリアルを適用する方法は?

これまでのところ、opengl esキューブに1つのマテリアルを適用することができました。しかし、私は同じキューブにいくつかの材料を適用する方法が不思議です。 OBJファイルからわかるように、材料は同じ頂点を共有する。それらの指標だけが変化する。 最初に、このマテリアルのそれぞれにdrawelementを使用することが考えられました。それが最初に本当に働いていますか?どのようにパフォーマンスが高価であり、Openg GL ES 1.1ではより良いアプローチがあるのでしょうか?

私が提供できるポインタがありがとうございました。

乾杯、 ステファン

# Blender v2.61 (sub 0) OBJ File: '' 
# www.blender.org 
mtllib MultiColorCube.mtl 
o Cube 
v 1.000000 -1.000000 -1.000000 
v 1.000000 -1.000000 1.000000 
v -1.000000 -1.000000 1.000000 
v -1.000000 -1.000000 -1.000000 
v 1.000000 1.000000 -0.999999 
v 0.999999 1.000000 1.000001 
v -1.000000 1.000000 1.000000 
v -1.000000 1.000000 -1.000000 
v -1.000000 1.000000 1.000000 
v 0.999999 1.000000 1.000001 
v -1.000000 -1.000000 1.000000 
v 1.000000 -1.000000 1.000000 
v 1.000000 -1.000000 -1.000000 
v 1.000000 -1.000000 -1.000000 
v -1.000000 -1.000000 -1.000000 
v -1.000000 -1.000000 -1.000000 
v -1.000000 -1.000000 1.000000 
v -1.000000 1.000000 -1.000000 
v -1.000000 1.000000 -1.000000 
v -1.000000 1.000000 1.000000 
v 1.000000 1.000000 -0.999999 
v 1.000000 1.000000 -0.999999 
v 0.999999 1.000000 1.000001 
v 1.000000 -1.000000 1.000000 
vn 0.000000 -1.000000 0.000000 
vn 0.000000 1.000000 0.000000 
vn -1.000000 -0.000000 -0.000000 
vn 0.000000 0.000000 -1.000000 
vn 0.000000 0.000000 1.000000 
vn 0.000000 0.000000 0.999969 
vn 1.000000 0.000000 0.000000 
usemtl bleu 
s off 
f 1//1 2//1 3//1 4//1 
f 5//2 8//2 7//2 6//2 
f 17//3 20//3 19//3 16//3 
f 21//4 14//4 15//4 18//4 
usemtl Jaune 
s 1 
f 10//5 9//5 11//6 
f 12//5 10//5 11//6 
usemtl Pink 
s off 
f 13//7 22//7 23//7 24//7 
+0

oglES2.0に移動してシェーダーを使用できますか?それともオプションではないのですか? – ideerge

+0

この時点では、もはやオプションではありません:( – stephane

答えて

0

はい、それはglDrawElements呼び出し間で材料の状態の設定を変更することが可能です。 インデックスの最初の塊の色を設定してから、これらのインデックスでglDrawElementsを呼び出し、次の色を設定するなどができます。 パフォーマンス的には、できるだけ大きなチャンクでジオメトリを描画し、マテリアル設定をできるだけ変更しないことが最適です。だから、あなたが色を変えたとすると、頂点の属性として色を持つ方が、頂点バッファにもっと多くのメモリを使いますが、より良いかもしれません。しかし、あなたの材料の変化がglColor呼び出し以上のものである限り、あなたはうまくいくはずです。より詳細なパフォーマンスアドバイスについては、実際にレンダリングしていることをより詳細に記述する必要があります。

+0

あなたの答えと助けてくれてありがとう!:) – stephane

関連する問題