为了账号安全,请及时绑定邮箱和手机立即绑定

找不到 Open GL ES 错误的原因

找不到 Open GL ES 错误的原因

梦里花落0921 2022-07-14 16:26:27
我在我的应用程序中使用 Open GL ES 3.1,但我遇到了一个到目前为止无法解决的问题。当我尝试创建 3D 对象时,根据调用构造函数的位置,对象要么被正确创建(并且可以成功显示),要么应用程序崩溃,因为无法创建着色器(调用glCreateShader()返回 0)。这让我说我的着色器代码是正确的。当我尝试使用 获取有关错误的信息时,即使返回的着色器为 0 glGetError(),我也会收到!GL_NO_ERROR我也添加了setDebugFlags(DEBUG_CHECK_GL_ERROR | DEBUG_LOG_GL_CALLS),但它没有给我任何线索。我想这个问题可能是由对 Open GL 环境的并发访问引起的,我同步了我的绘图和动画方法,但它也没有帮助。根据这个问题Compile GLSL shader asynchronously or in a different thread on Android,我很确定问题来自无法在单独的线程中使用主 Open GL 环境。但我不能确定这一点,因为给出的代码使用了我在 Open GL ES 3.1 库 ( EGLContext2, eglCreateContext, eglCreatePbufferSurface) 中找不到的类。有谁知道我如何从我的第二个线程访问 Open GL ES 环境?
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您需要为第二个线程创建第二个 EGL 上下文,并将其放置在与第一个上下文相同的共享组中,以便它们可以共享资源。为此,您可以share_context在调用eglCreateContext()第二个上下文时提供第一个上下文作为参数。

但我不能确定这一点,因为给出的代码使用了我在 Open GL ES 3.1 库 ( EGLContext2eglCreateContexteglCreatePbufferSurface) 中找不到的类。

由于函数前缀可能会泄露,对于上下文创建,您需要 EGL 库而不是 GL 库。


查看完整回答
反对 回复 2022-07-14
  • 1 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信