2012-02-17 82 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);