我想创建一个可以管理的带有OpenGL纹理的SurfaceTexture,类似于这个答案中的设置。 (在此引用:)
我的目标是在后台线程中创建EGLContext并使其成为当前线程,以对摄像头预览图像进行一些离屏计算(主要使用NDK)。 我想创建一个库,并尽可能地使其独立于UI。两个相关问题:
在Java方面,是否可以在先前没有创建SurfaceTexture的情况下创建EGLContext?
在NDK方面,以前有一个私有API调用来创建本地窗口android_createDisplaySurface(),但它不再起作用了,而且它是一个私有API。是否有任何方法使用NDK创建Surface?
我对使用EGL还很新,我无法理解为什么需要EGLSurface才能使EGLContext成为当前状态。在iOS中,可以首先创建EAGLContext,然后根据需要创建framebuffer。使用EGL似乎总是需要一个本地窗口。
- 通过OpenGL创建纹理
- 将该纹理传递给新SurfaceTexture的构造函数。
- 将此新SurfaceTexture提供给相机。
- 确保使用OES_External(有关详细信息,请参见文档)。
我的目标是在后台线程中创建EGLContext并使其成为当前线程,以对摄像头预览图像进行一些离屏计算(主要使用NDK)。 我想创建一个库,并尽可能地使其独立于UI。两个相关问题:
在Java方面,是否可以在先前没有创建SurfaceTexture的情况下创建EGLContext?
在NDK方面,以前有一个私有API调用来创建本地窗口android_createDisplaySurface(),但它不再起作用了,而且它是一个私有API。是否有任何方法使用NDK创建Surface?
我对使用EGL还很新,我无法理解为什么需要EGLSurface才能使EGLContext成为当前状态。在iOS中,可以首先创建EAGLContext,然后根据需要创建framebuffer。使用EGL似乎总是需要一个本地窗口。
GraphicBuffer
的NDK中,我选择了一个合适的EGL_NATIVE_VISUAL_ID
配置,成功创建了一个PbufferSurface
,创建了一个上下文,并使用这些display
、surface
和context
使其成为当前上下文。我需要传递什么作为(EGLClientBuffer)
给eglCreateImageKHR()
?从我所读到的内容来看,它应该以某种方式使用ANativeWindow
,但我无法弄清楚如何做到! - Adi ShaviteglCreateImageKHR()
和pbuffer进行直接渲染了吗? - Adi ShavitANativeWindow
是有用的呢? - Adi Shavit