OpenGL текстурирующие треугольники - PullRequest
3 голосов
/ 25 апреля 2011

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

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

код рендеринга.

    glBindTexture(GL_TEXTURE_2D, m_texture.id());

    //glEnableClientState(GL_INDEX_ARRAY);
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_NORMAL_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);

    //glIndexPointer(GL_INT, 0, &m_indices[0]);
    glVertexPointer(3, GL_FLOAT, sizeof(VertexData), &m_vertexData[0].x);
    glNormalPointer(GL_FLOAT, sizeof(VertexData), &m_vertexData[0].nx);
    glTexCoordPointer(2, GL_FLOAT, sizeof(UVData), &m_uvData[0].u);

    glDrawElements(GL_TRIANGLES, m_indices.size(), GL_UNSIGNED_INT, &m_indices[0]);
    glBindTexture(GL_TEXTURE_2D, 0);

Текстура в режиме обтекания GL_CLAMP_TO_EDGE

Скриншот

EDIT

вывод первых двух треугольников, которые я получаю значения ...

Треугольник 1:

Индексы (0,1,31)

Vertex0 (-15, 0, -15), Vertex1 (-15,0, -14), Vertex31 (-14, 0, -14)

УФ (0,1), (0,0), (1,0)

Треугольник 2:

Индексы (0, 30, 31)

Vertex0 (-15, 0, -15), Vertex30 (-14, 0, -15) Vertex31 (-14, 0, -14)

УФ (0, 1), (1, 1), (1, 0)

Для потомков полный код здесь

Два треугольника составляют квадрат с диагональным разрезом сверху вниз слева направо.

Ответы [ 2 ]

4 голосов
/ 25 апреля 2011

Не используйте glIndexPointer, это не то, что вы думаете, используется для режима индексации цвета, для создания индексированных сеток просто используйте glDrawElements.

0 голосов
/ 26 апреля 2011

Похоже, вы связываете данные УФ с индексами, а не с вершинами.UV-данные являются частью данных вершин, поэтому вам, вероятно, следует упаковать их в объект VertexData, а не хранить отдельно.Вы можете хранить его отдельно, но вам нужен один на вершину, а не один на индекс.

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