找不到Open GL ES错误的原因

时间:2019-02-28 07:25:46

标签: java android opengl-es

我在应用程序中使用的是Open GL ES 3.1,但遇到的问题是我目前无法修复。

当我尝试创建3D对象时,根据构造函数的调用位置,该对象是否正确创建(可以成功显示)或应用程序崩溃,因为无法创建着色器(调用{{1 }}返回0)。这可以让我说我的着色器代码正确。

当我尝试获取有关glCreateShader()的错误信息时,即使返回的着色器为0,我也会收到glGetError()

我还添加了GL_NO_ERROR,但它没有给我任何线索。

我认为问题可能是由于同时访问Open GL环境引起的,我使绘图和动画方法同步了,但也无济于事。

根据这个问题Compile GLSL shader asynchronously or in a different thread on Android,我很确定问题是由于无法在单独的线程中使用主Open GL环境引起的。但是我不能确定,因为给定的代码使用了我在Open GL ES 3.1库(setDebugFlags(DEBUG_CHECK_GL_ERROR | DEBUG_LOG_GL_CALLS)EGLContext2eglCreateContext)中找不到的类。

有人知道我如何从第二个线程访问Open GL ES环境吗?

1 个答案:

答案 0 :(得分:0)

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

  

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

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