2012-01-20 3 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.이 DMA가 플랫 배열로 복사되면 성공했습니다. 배열이 평면 일 필요가 있다는 것을 알지 못했습니다. 감사합니다! – Sonchou