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

あるべきポインタのサイズを通過したデータのサイズに渡すので、バッファにデータを提供します

関連する問題