2012-02-15 3 views
0

У меня есть простой куб, который я импортировал из Blender 3D; этот куб имеет 3 разных материала для его лица; желтый, розовый и синий.opengl es 1.1: как применить несколько материалов к одному объекту?

До сих пор мне удалось применить один материал на кубе opengl es. Однако мне интересно, как применить несколько материалов к одному и тому же кубу. Как вы увидите из файла OBJ; материалы имеют одни и те же вершины; меняются только их индексы. Первой мыслью было использование элемента для каждого из этих материалов; но он действительно работает? и насколько это дорого стоит, и есть ли лучший подход в Openg GL ES 1.1?

Большое спасибо за любой указатель, который вы можете мне предоставить.

Приветствия, Stephane

# 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

Смежные вопросы