可以在Dispatchers上运行EGL命令吗?android的默认值?



据我所知,egl14 . makeccurrent()函数将线程映射到我们创建的EGLContext。我们执行的每个EGL操作都将在与线程绑定的EGLContext上执行。

使用Dispatchers.Default包装EGL操作是否安全?根据文档,"调度程序。默认值由JVM上的线程共享池提供支持。默认情况下,此调度程序使用的最大线程数等于CPU内核数,但至少为两个。

我的EGL操作将在Dispatchers中切换线程。默认和EGLContext对于我所在的线程不可用?

从链接到EGL上下文的同一线程中调用EGL函数是不安全的。

您可以创建一个专用线程来处理EGL调用,并为它们构造Dispatcher。

像这样:

val dispatcher = Executors.newSingleThreadExecutor().asCoroutineDispatcher()
suspend fun init() {
withContext(dispatcher) {
EGL14.makeCurrent() 
}
}
suspend fun render() {
withContext(dispatcher) {
EGLFun()
}
}