2012-02-17 35 views
0

我正在编写一个opengl程序在可可和我无法使用交错顶点数组呈现。 Opengl使用NSOpenglview进行设置,特定的渲染由单个对象完成。渲染与设置类似于以下代码的静态“多维数据集”对象一起使用,但不使用索引图或iva。没有输出与IVA glDrawElements

我的初始化代码

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);

添加的数据是在octnode init中配置的,使用bebugger进行检查可以看到我期望的结果。

回答

0

当用于缓冲提供的数据,而不是传递在我经过指针

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

应的尺寸的数据的大小,至少

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