glCheckFramebufferStatus 返回 0 并且 glGetError 中没有错误 [关闭]
Posted
技术标签:
【中文标题】glCheckFramebufferStatus 返回 0 并且 glGetError 中没有错误 [关闭]【英文标题】:glCheckFramebufferStatus returns 0 and no error in glGetError [closed] 【发布时间】:2014-07-10 10:28:16 【问题描述】:glCheckFramebufferStatus 返回 0,之后 glGetError 没有返回错误。假设这是驱动程序错误是否安全?我似乎在 OpenGL 的文档中找不到任何关于如何处理这种情况的信息。
我正在使用带有 nvidia 专有驱动程序的 Linux (Ubuntu 14.04) 上的 SDL2 编写游戏。
【问题讨论】:
我假设 SDL 错误处理在内部调用 glGetError 并因此将其从您手中夺走。请尝试使用 SDL_GetError() wiki.libsdl.org/SDL_GetError。 但 glCheckFramebufferStatus 是对 OpenGL API 的直接调用。 SDL 如何拦截它? 您尝试过使用 SDL_GetError 吗? 是的。它返回一个空字符串。 【参考方案1】:如果有人想知道,原来我在没有绑定帧缓冲区时正在运行 glCheckFramebufferStatus。
【讨论】:
【参考方案2】:检查您是否忘记将上下文设置为当前上下文。这就是我的情况。
【讨论】:
【参考方案3】:如果目标不是 GL_DRAW_FRAMEBUFFER、GL_READ_FRAMEBUFFER 或 GL_FRAMEBUFFER,则生成 GL_INVALID_ENUM。因此,您可以检查您的目标是否属于其中一种类型。
评论:我从这里得到这个OpenGl.org
“另外,如果发生错误,则返回零。”
并且仅在目标不是 GL_DRAW_FRAMEBUFFER、GL_READ_FRAMEBUFFER 或 GL_FRAMEBUFFER 的情况下。
“生成了 GL_INVALID_ENUM”
所以我猜,发生了错误,但他们不会告诉你确实是哪一个。
【讨论】:
什么应该生成 GL_INVALID_ENUM? glCheckFramebufferStatus 返回 0 并且 glGetError 返回 GL_No_ERROR?你是说 GL_INVALID_ENUM 是 0?以上是关于glCheckFramebufferStatus 返回 0 并且 glGetError 中没有错误 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
OpenGL ES 2.0 Framebuffer 渲染到纹理 iOS:没有显示