我想使用多个EGL上下文在我的主线程之外加载纹理。在拨打eglCreateContext
后,我收到EGL_BAD_CONTEXT
错误。在Android上的OpenGL上下文之间共享资源
里面我android.opengl.Renderer
public void onSurfaceCreated (javax.microedition.khronos.opengles.GL10 gl, EGLConfig config) {
// ...
EGLContext sharedContext = egl.getCurrentContext();
EGLDisplay display = eglGetCurrentDisplay();
eglCreateContext(display, config, sharedContext, new int[] { EGL_CONTEXT_CLIENT_VERSION, 2 });
}
的EGL_BAD_CONTEXT
导致我的文档here,说,如果share_context是不一样的客户端的EGL渲染背景下产生
EGL_BAD_CONTEXT API类型作为新创建的上下文,而不是EGL_NO_CONTEXT。
这就是为什么我添加了EGL_CONTEXT_CLIENT_VERSION
参数,但它似乎没有效果。
我所看到的是,即使我得到这个错误,上下文似乎是半有效的。我能够用它在另一个线程
egl.eglMakeCurrent(display, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE, context);
在此之后,该线程创建的纹理不不原因的错误。但我确实看到纹理名称不是共享的,每个线程似乎都从0开始计数。
我的下一个假设是我需要共享上下文之间的界面。但是,如果我通过从原始上下文相同的表面到我eglMakeCurrent
,但我
E/AndroidRuntime(3210): java.lang.IllegalArgumentException
E/AndroidRuntime(3210): at com.google.android.gles_jni.EGLImpl._eglCreateContext(Native Method)
E/AndroidRuntime(3210): at com.google.android.gles_jni.EGLImpl.eglCreateContext(EGLImpl.java:54)
完全失败我觉得好像我几乎有,是否有人知道缺少了什么?