2011-02-16 88 views
1

我畫在從Android NDK OpenGL ES的一條線。我一直在虛擬機上開發,最近在手機上試用了我的應用程序。該應用程序在vm上運行良好。畫一條線。然而,在摩托羅拉機器人上,應用程序只是崩潰,並在HTC不可思議,它只是顯示一個黑屏。我已驗證傳遞給該函數的數字是正確的。該應用程序在glDrawArray(GL_LINES,0,2)調用中發生。全功能如下:調用glDrawArrays工作在虛擬機,死機的手機

void drawLine(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2, GLfloat * color) 
{ 
    GLfloat vVertices[] = 
    {x1, y1, 
    x2, y2}; 

    glEnableClientState(GL_VERTEX_ARRAY); 
    glEnableClientState(GL_COLOR_ARRAY); 
    glColor4f(color[0],color[1],color[2],color[3]); 
    glVertexPointer(2, GL_FLOAT, 0, vVertices); 

    glDrawArrays(GL_LINES, 0, 2); 
    __android_log_write(ANDROID_LOG_ERROR,"to mama","You drew arrays"); 

    glDisableClientState(GL_COLOR_ARRAY); 
    glDisableClientState(GL_VERTEX_ARRAY); 
} 

,並調用它看起來像這樣:

drawLine(0.0f,0.0f,1.0f,0.0f,colorx);/*x is green*/ 

我可以嘗試drawelements未來,但沒有理由畫數組不應該工作(據我知道)。

+0

當你說「崩潰」,究竟發生了什麼?日誌行是否被寫入?你可以添加更多的日誌記錄甚至簡單的嘗試/捕獲,看看有什麼失敗? – roryhewitt 2011-02-16 18:03:04

回答

1

你使顏色陣列(glEnableClientState(GL_COLOR_ARRAY)),而無需實際設置設置glColorPointer()

要麼設置顏色指針或不啓用顏色數組。