如何在使用OpenGL的PPAPI插件中获取当前的EGLContext

时间:2017-03-29 08:47:47

标签: opengl chromium google-nativeclient egl ppapi

我尝试使用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中的上下文吗?感谢您提供任何暗示!

0 个答案:

没有答案