OpenGLES 1.1: как применить несколько материалов к одному объекту? - PullRequest
0 голосов
/ 16 февраля 2012

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

Пока мне удалось нанести один материал на куб opengl es.Однако мне интересно, как применить несколько материалов к одному кубу.Как вы увидите из файла 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

1 Ответ

0 голосов
/ 16 февраля 2012

Да, можно изменять настройки состояния материала между вызовами glDrawElements. Вы можете просто установить цвет для первого блока индексов, затем вызвать glDrawElements с этими индексами, затем установить следующий цвет и так далее. Производительность обычно лучше рисовать геометрией как можно большими кусками и изменять параметры материала как можно реже. Таким образом, предполагая, что все, что вы изменяете, это цвет, тогда использование цветов в качестве атрибутов вершин может быть лучше, даже если оно использует больше памяти для буфера вершин. Но пока ваши материальные изменения - не что иное, как вызов glColor, у вас все будет хорошо. Чтобы получить более подробные советы по производительности, вам нужно более подробно описать, что вы на самом деле визуализируете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...