我有一个从Blender 3D导入的简单立方体;这个立方体的面部有3种不同的材料;黄色,粉红色和蓝色。
到目前为止,我已经设法在opengl es cube上应用了一种材质。但是我想知道如何将几种材料应用于同一个立方体。 正如您将从OBJ文件中看到的那样;材料共享相同的顶点;只有他们的指数改变。 首先想到的是每种材料都使用了一种元素;但它首先真正起作用吗?以及它的性能成本如何,在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 :(得分:0)
是的,可以在glDrawElements调用之间更改材料状态设置。 您可以为第一个索引块设置颜色,然后使用这些索引调用glDrawElements,然后设置下一个颜色,依此类推。 在性能方面,通常最好以尽可能大的块形式绘制几何体,并尽可能少地更改材料设置。因此,假设您所有的变化都是颜色,那么将颜色作为顶点属性可能会更好,尽管它会为顶点缓冲区消耗更多内存。但只要你的材料变化只不过是一个glColor调用,你应该没事。有关更详细的性能建议,您需要更详细地描述您实际呈现的内容。