恢复应用程序时 glUseProgram 中的 GL_INVALID_VALUE

问题描述 投票:0回答:1

我在以下代码中的

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
  }
c++ opengl-es cocos2d-iphone shader
1个回答
3
投票

如果我错了,请纠正我,但我相信这就是您正在寻找的?

https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgram.xhtml

例如。

if ( glIsProgram( mYUVProgram ) != GL_TRUE ){
  // Recreate mYUVProgram
}
 glUseProgram( mYUVProgram);
© www.soinside.com 2019 - 2024. All rights reserved.