我在以下代码中的
GL_INVALID_VALUE, 0x0501
处收到 glUseProgram(mYUVProgram);
错误。它发生在恢复应用程序时。根据 glUseProgram 文档
如果出现以下情况,则会生成 GL_INVALID_VALUE 程序既不是 0 也不是值 由 OpenGL 生成。
我想知道在应用程序恢复后如何检查
mYUVProgram
的值,无论其是否有效。这样,如果 mYUVProgram
的值无效,我可以再次创建着色器程序。 (我只是OpenGL的初学者,所以如果这个问题太微不足道,请原谅我)
代码
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
}
如果我错了,请纠正我,但我相信这就是您正在寻找的?
https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgram.xhtml
例如。
if ( glIsProgram( mYUVProgram ) != GL_TRUE ){
// Recreate mYUVProgram
}
glUseProgram( mYUVProgram);