Проблема с использованием glTexCoordPointer ()

Я довольно новичок в OpenGL (и GLSL), и у меня есть проблема с использованием glTexCoordPointer(),

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

Массивы определены следующим образом:

static const GLfloat obj_vert_buf[] = {
-1, 0, -1,
-1, 0, 1,
1, 0, 1,
1, 0, -1
};

static const GLfloat obj_tex_buf[] = {
0, 0,
0, 1,
1, 1,
1, 0
};

И соответствующий отрывок из функции draw:

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY_EXT);

glGenBuffers(1, &obj_id);

glTexCoordPointer(2, GL_FLOAT, 0, obj_tex_buf);
glVertexPointer(3, GL_FLOAT, 0, obj_vert_buf);
glDrawArrays(GL_QUADS, 0, sizeof(obj_vert_buf) / sizeof(GLfloat));

glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY_EXT);

Насколько я понимаю glTexCoordPointer()Первый аргумент указывает количество элементов в вершине, которое будет два, как в:

glTexCoord2f(0.0, 0.0);

Вторым аргументом является тип, GLfloat,

Третий аргумент — это смещение между каждым набором элементов, относящихся к каждой вершине, так что ноль после двух, указанных ранее (я также пробовал с 2 * sizeof(GLfloat) без изменений).

И четвертый аргумент — указатель на начало данных, т.е. obj_tex_buf,

Quad отрисовывает правильно и текстура на нем нарисована правильно, но я получаю другая случайная форма если он выйдет из своего центра и будет неправильно текстурирован, любые мысли будут великолепны. Дополнительный квад не виден без glTexCoordPointer() линия.

1

Решение

От документы:

count
Specifies the number of indices to be rendered.

Таким образом, вы должны позвонить glDrawArrays(GL_QUADS, 0, 4);

Обратите внимание, что GL_QUADS больше не поддерживается официально с OpenGL 3.1.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]