В типичном движке рендеринга OpenGL, как я должен идти о загрузке и отображении файлов Wavefont OBJ - PullRequest
1 голос
/ 15 ноября 2011

Я успешно создал загрузчик объектов в java, который загружает в вершины, индексы, текстурные координаты и нормали. Загрузчик объектов, считывает из файлов Wavefont OBJ.

Это относительно просто, однако, как только я пытаюсь загрузить более сложный файл с индексами текстурных координат и нормальными индексами, я понятия не имею, что делать с этими дополнительными наборами индексов? Я не смог найти какие-либо методы opengl (или в данном случае opengl es 1.1) для анализа текстуры и нормальных индексов. Это не только мешало мне в opengl для android, но и раньше делало в webgl, поэтому любая помощь будет высоко ценится. Довольно досадно, что существует так много учебных пособий, в которых рассказывается о том, как загружать вершины, индексы, текстурные координаты и нормали, но я пока не вижу одного (для opengl es), где они загружаются в текстурных и обычных индексах.

Нужно ли переупорядочивать или перестраивать текстурные координаты / нормальные массивы на основе индексов? или какая-то функция отсутствует или?

1 Ответ

2 голосов
/ 15 ноября 2011

но мне еще предстоит увидеть один (для opengl es), где они загружаются в текстуре и нормальных индексах.

Для этого есть причина: ты не можешь. Именно поэтому формат Wavefront OBJ плохо подходит для загрузки в приложения OpenGL / D3D.

Каждая вершина, каждая комбинация данных position / normal / texCoord / etc, должна быть уникальной . Если вы выполняете рендеринг индекса, каждый индекс ссылается на определенную комбинацию position / normal / texCoord / etc.

Короче говоря, вы можете использовать только один индекс для рендеринга. Этот индекс индексирует во все массивы атрибутов одновременно. Поэтому, если ваши данные индексируют разные атрибуты с разными списками индексов, вы должны преобразовать свои данные, чтобы сделать все правильно. Лучший способ сделать это - использовать какой-нибудь автономный инструмент.

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