2012-09-10 39 views
2

我正在開發OpenCV客戶端應用程序,我的應用程序在IOS 5.1上工作正常,但是當我在IOS 4.3上運行我的應用程序時,它崩潰在gl.h類中定義的glColor4f函數,但它不在崩潰時顯示任何錯誤消息。我在做類似以下內容:應用程序崩潰在IOS中的glColor4f OpenGl功能

QCAR::Matrix44F modelViewProjection; 


       glColor4f(0.5f,0.0f,0.0f,0.0f); 
       ShaderUtils::multiplyMatrix(&qUtils.projectionMatrix.data[0], &modelViewMatrix.data[0], &modelViewProjection.data[0]); 
       glUseProgram(shaderProgramID); 
       glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &vbVertices[0]); 
       glEnableVertexAttribArray(vertexHandle); 
       glUniformMatrix4fv(mvpMatrixHandle, 1, GL_FALSE, (GLfloat*)&modelViewProjection.data[0]); 
       glColor4f(0.5f,0.0f,0.0f,0.0f); 

       glEnableClientState (GL_VERTEX_ARRAY); 
       glEnableClientState (GL_COLOR_ARRAY); 
       glEnableClientState(GL_COLOR_ARRAY);  
       // glColorPointer(4, GL_FLOAT, 0, triangleColors); 
       glVertexPointer(3, GL_FLOAT, 0, (const GLvoid*) &vbVertices[0]); 
       glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
       glDisable(GL_TEXTURE_2D); 
       glDrawArrays(GL_LINES, 0, 8); 
       //glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
       //glDisable(GL_TEXTURE_2D); 
       glDisableVertexAttribArray(vertexHandle); 
+0

我將考驗3參數版本:'glColor3f(0.5F,0.0F,0.0F)'並看看是否也崩潰。 – karlphillip

+0

謝謝Karlphillip,但在我的這個功能是未知的,我應該爲此添加頭文件? – josh

+1

我的歉意,在OpenGL ES中不存在'glColor3f()'。 – karlphillip

回答

1

glColor4f()僅用於OpenGL ES 1.1固定功能管線。在上面的代碼中使用glUseProgram(),您正在使用OpenGL ES 2.0,因此不支持glColor4f()

如果你想設置你的材料的顏色,你需要通過你的着色器程序中的統一顏色來完成。如果你不是隻想設置場景的背景顏色,你會使用類似以下內容:

glClearColor(0.0f, 0.0f, 0.0f, 1.0f); 
    glClear(GL_COLOR_BUFFER_BIT);