Невозможно установить цвета в OpenGL - PullRequest
1 голос
/ 20 августа 2011

У меня есть сцена OpenGL, сделанная как VBO и IBO.Мой VBO - это серия из 3 чисел с плавающей запятой: x, y, z, x, y, z, x, y, z ... В дополнение к этому у меня есть массив цветов, состоящий из серии из 3 поплавков: r, g,b, r, g, b, r, g, b ...

Моя цель состоит в том, чтобы первая вершина (x = вершина [0], y = вершина [1], z = вершина [2]) связан с первым цветом (r = цвет [0], g = цвет [1], b = цвет [2]).Однако я не могу отобразить цвета с кодом ниже:

    glGenBuffers(1, &VertexVBOID);

    glBindBuffer(GL_ARRAY_BUFFER, VertexVBOID);
    glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*nbVertex*3, glVertex, GL_STATIC_DRAW);

    glGenBuffers(1, &IndexVBOID);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IndexVBOID);
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(int)*nbVBOInd, VBOInd, GL_STATIC_DRAW);

    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_COLOR_ARRAY);

    glBindBuffer(GL_ARRAY_BUFFER, VertexVBOID);
    glVertexPointer(3, GL_FLOAT,0,0);
    glColorPointer(3, GL_FLOAT, 0, glColors);

    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IndexVBOID);

    glDrawElements(GL_TRIANGLES, nbVBOInd, GL_UNSIGNED_INT, 0);

Есть ли проблема в коде выше, или в том, как мой массив настроен?

1 Ответ

3 голосов
/ 20 августа 2011

Попробуйте эту последовательность:

glBindBuffer(GL_ARRAY_BUFFER, VertexVBOID);
glVertexPointer(3, GL_FLOAT,0,0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glColorPointer(3, GL_FLOAT, 0, glColors);

Кроме того, посмотрите документы для glBindBuffer():

Имена объектов буфера являются целыми числами без знака,Нулевое значение зарезервировано, но для каждого целевого объекта буфера отсутствует буферный объект по умолчанию.Вместо этого buffer, установленный в ноль, эффективно отсоединяет любой ранее связанный объект буфера и восстанавливает использование клиентской памяти для этого целевого объекта буфера .

...