【发布时间】:2010-08-20 02:57:39
【问题描述】:
我正在使用 Android NDK 制作一个 OpenGLES Android 应用程序,从 android 的 gljni 示例扩展而来,可以找到 here
它正在使用 GLSurfaceView。纹理在 GLSurfaceView.Renderer 的 onSurfaceChanged() 调用的 JNI 函数中初始化
当用户触摸屏幕时,应用需要更多纹理。为此,在 onTouchEvent() 中调用的 JNI 函数中调用 glGenTextures()。
问题在于线程 id(gettid() 返回的)似乎完全是任意的,并且并不总是与具有 OpenGL 上下文的线程 id 相同。
如果在同一个线程中调用 JNI 函数,它会加载并显示纹理,但如果它在另一个线程上则失败。所以它的行为非常随机。
我可以这样做吗:
共享 OpenGL 上下文,以便我可以在任何线程上成功调用 glGenTextures()。
让 onTouchEvent() 仅在一个具有 OpenGL 上下文的线程中被调用
或任何我可以让它工作的东西
?
谢谢
【问题讨论】:
标签: android opengl-es android-ndk textures