2012-01-20 111 views
1

我嘗試通過DMA VBO。 但它不起作用。VBO不工作動態(內存分配)

Svertex = new GLdouble**[nSlice+1]; 

Snormal = new GLdouble**[nSlice+1]; 
Scolor = new GLdouble**[nSlice+1]; 
Sindicesup = new GLbyte[3]; 
for(int i=0; i < nSlice+1; i++){ 

    Svertex[i] = new GLdouble*[nStack+1]; 
    Snormal[i] = new GLdouble*[nStack+1]; 
    Scolor[i] = new GLdouble*[nStack+1]; 

    for(int j=0; j < nStack+1; j++) 
    { 

      Svertex[i][j] = new GLdouble[3]; 
      Snormal[i][j] = new GLdouble[3]; 
      Scolor[i][j] = new GLdouble[3]; 

    } 
} 
    ----------------------------------------------------------      
     glBufferData(GL_ARRAY_BUFFER,8*11*11*3, 
        Svertex,GL_DYNAMIC_DRAW); 

我懷疑glBufferData(我也許錯了ArrayPointer)。 請幫幫我。

對不起我的英語很差..

回答

1

該陣列需要平坦。你想要一個new GLdouble[3*(nStack+1)*(nSlice+1)]傳遞給OpenGL。你可以創建指針數組來幫助你索引它,但是平面數組將會傳遞給OpenGL。

+0

謝謝Mr.Ben.I當這個dma拷貝到flat array時成功了。我不知道數組需要變平。謝謝! – Sonchou