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로 검사하면 예상 한 결과가 표시됩니다.