我尝试使用OpenGL PPAPI Wrapper开发一个渲染3D图形的PPAPI插件(在Chromium应用程序中)。此外,我想利用一个EGL扩展,允许我访问在另一个进程中呈现的共享DirectX纹理。我想在PPAPI的Graphics3D OpenGL上下文中使用这个纹理(以便在插件的UI元素中显示它)。
在PPAPI插件中,我能够访问共享的D3D纹理并创建一个EGL Surface(实际上是一个PBuffer,使用eglCreatePbufferFromClientBuffer)。 但是我假设在尝试将此表面绑定到插件的OpenGL上下文中的OpenGL纹理时,我的EGLSurface生活在与我在PPAPI的OpenGL上下文中创建的纹理不同的上下文中。
EGLSurface eglSurface = eglCreatePbufferFromClientBuffer(eglDisplay, EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE, m_SharedTextureHandle, eglConfig, pBufferAttributes);
eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);
glGenTextures(1, &m_glSharedTex);
glBindTexture(GL_TEXTURE_2D, m_glSharedTex);
eglBindTexImage(eglDisplay, eglSurface, EGL_BACK_BUFFER)
这可能是由于我设置了自己的EGLDisplay和我自己的EGLContext
EGLDisplay eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
EGLContext eglContext = eglCreateContext(eglDisplay, eglConfig, EGL_NO_CONTEXT, pContextAttributes));
但是,尝试使用现有上下文eglGetCurrentContext()会返回EGL_NO_CONTEXT,与显示一样。
所以我需要的是访问插件的实际EGLContext。我怎样才能做到这一点?我可以以某种方式共享使用glSetCurrentContextPPAPI()创建的EGL中的上下文吗?感谢您提供任何暗示!