我想使用多個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)
完全失敗我覺得好像我幾乎有,是否有人知道缺少了什麼?