我正在使用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);
答案 0 :(得分:2)
我做了一些研究,这里有几件事你可以试试:
glColor4d()
代替,它需要4个双参数; getProc
调用glColor4f
,则会发生这种情况; glColor4f()
之前调用glGetError()来了解GL方面是否存在问题。此外,有人在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);