EGL 从 android 本机 activity 回到 Java
EGL from android native activity back to Java
我有一个小问题想解决。
基本上我正在使用 NDK 创建一个 EGL 上下文,类似于此:http://developer.android.com/reference/android/app/NativeActivity.html
在 android 中,如果您扩展 surfaceview.renderer
,它还会在 onCreated
和 onSurfaceChange
调用之后在幕后创建一个 EGL 上下文。你可以在这里看到更多:http://developer.android.com/reference/android/opengl/GLSurfaceView.Renderer.html
我的问题是,因为我在本机 Activity 中创建我的 EGL 上下文,但我需要从 Java 端访问一些生命周期函数。是否可以从本机 Activity 传递我的 EGL 上下文并使用它来设置 android surfaceview.renderer
然后使用 glsurfaceview.renderer
通过 JNI 调用回调本机?
你做错了。
GLSurfaceView 的要点是将 SurfaceView 与一些为您处理 EGL 上下文和线程管理的代码相结合。如果您正在执行自己的 EGL 设置,并且您不介意处理线程问题,则没有理由使用 GLSurfaceView —— 这样做会使事情变得更加复杂。
如果您想创建和管理自己的 EGL 上下文,请使用普通的 SurfaceView。从 SurfaceView 的表面创建一个 EGLSurface。
如果您更喜欢 GLSurfaceView,请不要创建单独的 EGL 上下文。只需使用 GLSurfaceView 为您创建的那个。了解它会在 Activity 暂停时被销毁并重新创建。
我有一个小问题想解决。
基本上我正在使用 NDK 创建一个 EGL 上下文,类似于此:http://developer.android.com/reference/android/app/NativeActivity.html
在 android 中,如果您扩展 surfaceview.renderer
,它还会在 onCreated
和 onSurfaceChange
调用之后在幕后创建一个 EGL 上下文。你可以在这里看到更多:http://developer.android.com/reference/android/opengl/GLSurfaceView.Renderer.html
我的问题是,因为我在本机 Activity 中创建我的 EGL 上下文,但我需要从 Java 端访问一些生命周期函数。是否可以从本机 Activity 传递我的 EGL 上下文并使用它来设置 android surfaceview.renderer
然后使用 glsurfaceview.renderer
通过 JNI 调用回调本机?
你做错了。
GLSurfaceView 的要点是将 SurfaceView 与一些为您处理 EGL 上下文和线程管理的代码相结合。如果您正在执行自己的 EGL 设置,并且您不介意处理线程问题,则没有理由使用 GLSurfaceView —— 这样做会使事情变得更加复杂。
如果您想创建和管理自己的 EGL 上下文,请使用普通的 SurfaceView。从 SurfaceView 的表面创建一个 EGLSurface。
如果您更喜欢 GLSurfaceView,请不要创建单独的 EGL 上下文。只需使用 GLSurfaceView 为您创建的那个。了解它会在 Activity 暂停时被销毁并重新创建。