Нет вывода из glDrawElements с IVA - PullRequest
       2

Нет вывода из glDrawElements с IVA

0 голосов
/ 17 февраля 2012

Я пишу программу opengl на какао, и у меня возникают проблемы при рендеринге с использованием чередующихся массивов вершин. Opengl настраивается с использованием NSOpenglview, а конкретный рендеринг выполняется отдельными объектами. Рендеринг работает со статическим объектом «куб», который настроен аналогично следующему коду, но не использует индексированный рисунок или iva.

Мой код инициализации

    node = [[Octnode alloc]initWithTreeHeight:0 nodeSize:1.0 orign:&origin memoryPointer:vertexData];

    indexArray[0] = 0;
    indexArray[1] = 1;
    indexArray[2] = 2;


    glGenBuffers(1, &vertexBufferObject);
    glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertexData), vertexData, GL_DYNAMIC_DRAW);
    glBindBuffer(GL_ARRAY_BUFFER, 0);

    glGenBuffers(1, &indexBufferObject);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferObject);
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, 36 * sizeof(unsigned int), indexArray, GL_DYNAMIC_DRAW);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);

    glGenVertexArraysAPPLE(1, &vertexArrayObject);
    glBindVertexArrayAPPLE(vertexArrayObject);

    glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject);

    glEnableVertexAttribArray(0);
    glEnableVertexAttribArray(1);
    glEnableVertexAttribArray(2);

    glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, sizeof(colouredNormalVertex), 0);
    glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, sizeof(colouredNormalVertex), (void*)sizeof(vertex));
    glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, sizeof(colouredNormalVertex), (void *) ( sizeof(vertex) + sizeof(colour)));

    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferObject);

    glBindVertexArrayAPPLE(0);

Код рендеринга glBindVertexArrayAPPLE (vertexArrayObject); glDrawElements (GL_LINES, 3, GL_UNSIGNED_INT, 0); glBindVertexArrayAPPLE (0);

Данные для добавляемого массива настраиваются в окт-узле init, и проверка с использованием bebugger-а показывает, что я ожидаю.

1 Ответ

0 голосов
/ 17 февраля 2012

При предоставлении данных для буфера вместо передачи размера данных я передавал размер указателя

glBufferData(GL_ARRAY_BUFFER, sizeof(vertexData), vertexData, GL_DYNAMIC_DRAW);

Должно быть, как минимум,

glBufferData(GL_ARRAY_BUFFER, sizeof(voxelData), vertexData, GL_DYNAMIC_DRAW);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...