2016-04-03 76 views
0

嗯,很確定問題很簡單,但我沒有看到問題和調試器沒有幫助我。無論如何,我試圖畫一架飛機,而我得到的只是黑色。我真的不確定是否繪製它,但太小而無法看到。opengl glDrawElements問題

int index[][3] = {{0,1,4}, {0,3,4}, {1,2,5}, {1,4,5}}; 
double VertexA[][3] = {{0.0 , 0.0 , -.0415}, {0.5, 0.0, .6543}, {1.0,0,-.0415}, 
         {0.0, 0.5, .093}, {0.5, 0.5, -.070}, {1.0, 0.5 , .093}, 
         {0.0,1.0, -.0415}, {0.5, 1.0, .6543}, {1.0,1.0,-.0415}} 

void display() { 
    glClear(GL_COLOR_BUFFER_BIT); 
    glLoadIdentity(); 
    glEnableClientState(GL_VERTEX_ARRAY); 
    glVertexPointer(3, GL_DOUBLE, 24, VertexA); 
    glDrawElements(GL_TRIANGLES, 4, GL_UNSIGNED_INT, index); 
    glDisableClientState(GL_VERTEX_ARRAY); 
    glutSwapBuffers(); 
} 
void reshape(int w, int h) { 
    if (w <= h) { 
     glViewport(0,(h-w)/2, w,w); 
    } 
    else { 
     glViewport((w-h)/2,0,h,h); 
    } 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluPerspective(30.0, w/h, 10.0, 100.0); 
    glMatrixMode(GL_MODELVIEW); 

} 

這是用定義的VertexA/Index數組修改我的代碼的代碼片段。我很確定index/vertexArray是正確獲取的,它繪製的部分是我得到問題的地方。我猜我濫用glDrawElement或gluPerspective。老實說,我不確定。我需要有一個ColorArray嗎?如果我沒有在第一個地方定義顏色,它應該是白色的?任何問題或者你想要更多的片段都會問,但我有一個感覺是問題在片段之內。

+0

另:我的編譯器在嘗試用'.0.5'(你的第3行)初始化'double'時出現語法錯誤。 –

+0

修復它,這是一個錯字,我不想發佈整個代碼,我得到的VertexA /索引數據 – Leruce

回答

2

函數gluPerspective需要浮點參數aspect。您的行是

gluPerspective(30.0, w/h, 10.0, 100.0); 

但計算w/h是一個整數除法。我建議你使用(double)w/h或者(GLdouble)w/h

+0

int不會被迫翻倍嗎?那麼,我檢查和測試。似乎沒有幫助。 znear/zfar看起來不錯?我不認爲這是問題,但不確定如何確定理想的使用方法。 – Leruce

+1

對不起,它沒有幫助。劃分完成時不考慮目標類型:表達式根據它們包含的類型進行評估,然後根據需要轉換爲目標類型。 –

3

你的對象完全不在視角內。您正在使用身份矩陣作爲模型視圖,而gluPrespectivenear=10far=100作爲投影。結果,視圖體積將從z = -10到z = -100,而您的對象位於z = -0.1到z = 0.1,因此它們被近平面剪切。