2012-02-15 14 views
0

我已經從Blender 3D導入了一個簡單的立方體;這個立方體有3種不同的面料;黃色,粉紅色和藍色。opengl es 1.1:如何將幾種材料應用於單個物體?

到目前爲止,我已經設法在opengl立方體上應用一種材質。不過,我想知道如何將幾種材料應用於同一個立方體。正如你將從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 2012-02-15 22:18:09

+0

在這個時候,它不再是一個選項:( – stephane 2012-02-15 22:29:40

回答

0

是的,這是有可能在glDrawElements調用之間改變材料的狀態設置。 您可以爲第一個索引塊設置顏色,然後用這些索引調用glDrawElements,然後設置下一個顏色等等。 在性能方面,通常最好儘可能以大塊形式繪製幾何圖形,並儘可能少地更改材料設置。所以,假設你所改變的是顏色,那麼顏色作爲頂點屬性可能會更好,儘管它爲頂點緩衝區使用了更多的內存。但只要你的材料變化不過是一次glColor調用,你應該沒問題。有關更詳細的性能建議,您需要更詳細地描述您實際渲染的內容。

+0

感謝您的回答和幫助!:) – stephane 2012-07-21 21:58:28