0

我正在用 C++ 编写 OpenGL,并通过 JNI 从 Android 调用它。我的代码因此错误而崩溃:

OpenGL 错误:GL_INVALID_FRAMEBUFFER_OPERATION 在 glBindFramebuffer(GL_FRAMEBUFFER,0)

它只发生大约五分之一。根据文件,这绝不应该发生。的文件glBindFramebuffer说:

如果 framebuffer 不为零或先前从调用 glGenFramebuffers 返回的帧缓冲区的名称,则生成 GL_INVALID_OPERATION。

就我而言,framebuffer它始终为 0,因此它应该始终有效,但不知何故它没有。我确实注意到我正在编写的代码使用 ES2。ES2 文档页面没有说明让我感到困惑的错误GL_INVALID_FRAMEBUFFER_OPERATION。这是我的 C++ 文件中与 OpenGL 相关的包含:

#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <EGL/eglplatform.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>

对于它的价值,我想做的是将相机帧渲染为 a FBO,然后再次将其渲染为SurfaceUI 提供的 a 。在将其复制到 UI 之前Surface,我需要取消绑定FBO,这就是崩溃发生的时候。

4

0 回答 0