OpenGLES 2.0 разделяет буферы для вершин, цветов и координат текстуры

Я изучаю OpenGL уже несколько дней, следуя некоторым руководствам и кодируя некоторые собственные эксперименты. Но есть одна вещь, которую я действительно не понимаю, что мешает мне продолжать. Я гуглил уже несколько часов и пока не нашел ответа на свой вопрос.

Где я должен указать каждое отдельное значение цвета и координаты текстуры для каждой отдельной вершины? Должны ли эти свойства всегда быть перечислены в том же массиве (структуре), что и позиции вершин? Примерно так:

const Vertex Vertices[] = {
    // Front
    {{1, -1, 0}, {1, 0, 0, 1}, {TEX_COORD_MAX, 0}},
    {{1, 1, 0}, {0, 1, 0, 1}, {TEX_COORD_MAX, TEX_COORD_MAX}},
    {{-1, 1, 0}, {0, 0, 1, 1}, {0, TEX_COORD_MAX}},
    {{-1, -1, 0}, {0, 0, 0, 1}, {0, 0}},

    ...

Или есть способ поместить значения цвета и координаты текстуры в отдельные массивы? Но тогда возникает вопрос: как мне вызвать glDrawElements с отдельными массивами?

Если вам интересно, почему я хочу разделить эти значения: в настоящее время я создаю свой собственный анализатор .obj в obj- c, и мне было интересно: что, если вы загрузите модель без текстуры и хотите показать цвет только на объекте? Или: что, если вы хотите загрузить модель только с сопоставленной текстурой, но без отдельного цвета для каждой вершины? И: не помещает значения цвета и координаты текстуры, раздувая структуру Vertex слишком большим количеством данных.

10
задан genpfault 6 January 2012 в 14:21
поделиться