我在以下代码中GL_INVALID_VALUE, 0x0501
收到glUseProgram(mYUVProgram);
错误。它会在恢复应用时发生。根据{{3}}
如果生成GL_INVALID_VALUE 程序既不是0也不是值 由OpenGL生成。
我想知道在应用恢复后,我可以检查mYUVProgram
的值,无论是有效还是无效。因此,如果mYUVProgram
的值无效,我可以再次创建着色器程序。 (我只是OpenGL的初学者所以请原谅我,如果这个问题太微不足道了)
CODE
void draw() {
if (!mFrameTexture) {
glGenTextures( 1, &mFrameTexture );
mProgram = Shaders::addProgram(this, (char *) Shaders::vertexShader,
(char *) Shaders::fragmentShader);
//other initialization code
CCLOG("draw:: added shader");
}
glUseProgram(mYUVProgram);
//other drawing code
}
答案 0 :(得分:1)
如果我错了,请纠正我,但我相信这就是你要找的东西?
http://www.opengl.org/sdk/docs/man/xhtml/glIsProgram.xml
例如。
if ( glIsProgram( mYUVProgram ) != GL_TRUE ){
// Recreate mYUVProgram
}
glUseProgram( mYUVProgram);