什么时候glGenRenderbuffers()生成" 0"?

时间:2015-03-18 12:15:12

标签: opengl

我已经回到了一些过去常常会发现它不再存在的旧代码。它应该通过渲染缓冲区在屏幕外渲染OpenGL。

显然正在发生的是:

GLuint id;
glGenRenderbuffers(1, &id);

成功,但id设置为0,这不是有效的渲染缓冲区。当然,以下对glBindRenderbuffer()的调用会成功,但之后会glRenderbufferStorage() fails with GL_INVALID_OPERATION

我在glGetError()之后检查glGenRenderbuffers(),电话显然是成功的,但我没有得到结果。在什么情况下允许生成" 0"?

对于它的价值,glGenFramebuffers()会按预期生成非零ID。

(在OS X 10.10.2,Xcode 6.2,针对10.9 SDK进行编译)

1 个答案:

答案 0 :(得分:0)

它(可能)不是。但是,如果没有活动上下文,则OpenGL调用的行为是未定义的。呼叫可能会无声地失败或返回垃圾。

我找不到任何关于这个事实的文件; OpenGL文档(故意)对上下文含糊不清,但在实践中似乎就是这种情况。