Как работают лица в .obj? - PullRequest
       38

Как работают лица в .obj?

0 голосов
/ 01 декабря 2010

При синтаксическом анализе .obj-файла с вершинами и гранями вершин легко передать вершины шейдеру и использовать glDrawElements с использованием граней вершины.

При разборе .obj-файл, с вершинами и текстурными координатами, встречается другой тип лица: текстурные координаты.

При отображении текстур, помимо загрузки изображений, их связывания и передачи координат текстуры в анализатор, как использовать грани с текстурными координатами?Они отличаются от граней вершин, и я предполагаю, что грани текстурных координат имеют цель при отображении текстур?

С уважением Niclas

1 Ответ

0 голосов
/ 02 декабря 2010

Не уверен, что вы спрашиваете, но если я вас правильно понимаю, вам интересно, как вы храните данные для координат текстуры для рендеринга текстурированного трехмерного объекта. Если это так, вы сохраняете данные vertex-normal-textureCoordinate в чередующемся формате, как показано ниже:

vertexX vertexY vertexZ normalX normalY normalZ textureX textureY textureZ

Как только у вас есть их массив, вы создаете указатели на различные части массива и визуализируете, как показано ниже:

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);

glVertexPointer(3, GL_FLOAT, sizeof(vertexArray[0])*9, &vertexArray[0]);
glNormalPointer(3, GL_FLOAT, sizeof(vertexArray[0])*9, &vertexArray[3]);
glTexCoordPointer(GL_FLOAT, sizeof(vertexArray[0])*9, &vertexArray[6]);

glDrawElements(GL_TRIANGLES, indices.size(), GL_UNSIGNED_SHORT, &indices[0]);

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

...