2012-02-17 7 views
0

나는 코코아에서 OpenGL 프로그램을 작성 중이며 인터리브 된 정점 배열을 사용하여 렌더링하는 데 문제가 있습니다. OpenGL은 NSOpenglview를 사용하여 설정되며 특정 렌더링은 개별 객체에 의해 수행됩니다. 렌더링은 다음 코드와 비슷하게 설정되지만 인덱싱 된 그림이나 iva를 사용하지 않는 정적 '큐브'개체와 함께 작동합니다.IVD로 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(voxelData), vertexData, GL_DYNAMIC_DRAW); 
에 대신 제가

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

될한다 포인터의 사이즈를 전달 된 데이터의 사이즈에 전달하는, 상기 버퍼에 대한 데이터를 제공하는

관련 문제