0

我在以下代码中遇到GL_INVALID_VALUE​, 0x0501错误。glUseProgram(mYUVProgram);它发生在恢复应用程序时。根据glUseProgram 文档

如果程序既不是 0 也不是 OpenGL 生成的值,则生成 GL_INVALID_VALUE。

我想知道在应用程序恢复后如何检查 的值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
  }
4

1 回答 1

2

Correct me if I am wrong , but I believe this is what you are looking for?

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

eg.

if ( glIsProgram( mYUVProgram ) != GL_TRUE ){
  // Recreate mYUVProgram
}
 glUseProgram( mYUVProgram);
于 2013-06-13T10:08:16.770 回答