应用程序崩溃在IOS中的glColor4f OpenGl函数

时间:2012-09-10 13:39:09

标签: iphone ios opencv opengl-es qcar-sdk

我正在使用OpenCV客户端应用程序,我的应用程序在IOS 5.1上工作正常,但是当我在IOS 4.3上运行我的应用程序时,它在glColor4f类中定义的gl.h函数崩溃了,但它没有显示崩溃时的任何错误消息。我做的如下:

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);

2 个答案:

答案 0 :(得分:2)

我做了一些研究,这里有几件事你可以试试:

此外,有人在this thread回复了您的问题。他可能是对的。

答案 1 :(得分: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);