恢复应用程序时glUseProgram中的GL_INVALID_VALUE

时间:2013-06-13 09:42:20

标签: c++ opengl-es cocos2d-iphone shader

我在以下代码中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
  }

1 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我,但我相信这就是你要找的东西?

http://www.opengl.org/sdk/docs/man/xhtml/glIsProgram.xml

例如。

if ( glIsProgram( mYUVProgram ) != GL_TRUE ){
  // Recreate mYUVProgram
}
 glUseProgram( mYUVProgram);