gpt4 book ai didi

android - 无法在多线程 Android 应用程序上调用 glGenTextures

转载 作者:太空狗 更新时间:2023-10-29 16:25:14 26 4
gpt4 key购买 nike

我正在使用 Android NDK 制作一个 OpenGLES Android 应用程序,从 android 的 gljni 示例扩展,可以找到 here

它正在使用 GLSurfaceView。纹理在从 GLSurfaceView.Renderer 的 onSurfaceChanged() 调用的 JNI 函数中初始化

当用户触摸屏幕时,应用需要更多纹理。为此,在 onTouchEvent() 中调用的 JNI 函数中调用了 glGenTextures()。

问题是线程 ID(gettid() 返回)似乎完全是任意的,并不总是与具有 OpenGL 上下文的线程 ID 相同。

如果在同一线程中调用 JNI 函数,它会加载并显示纹理,但如果在另一个线程中调用,则会失败。所以它的行为非常随机。

我可以做类似的事情吗:

  • 共享 OpenGL 上下文,以便我可以在任何线程上成功调用 glGenTextures()。

  • 使 onTouchEvent() 仅在一个具有 OpenGl 上下文的线程中调用

  • 或者任何我可以让它工作的东西

?

谢谢

最佳答案

这不是随机行为,而是 OpenGL 与线程交互的方式。上下文仅在一个线程上有效,其他线程没有 GL 上下文,除非您专门为要与 OpenGL 一起使用的每个线程创建一个上下文。没有上下文,所有 GL 调用都会失败。

关于android - 无法在多线程 Android 应用程序上调用 glGenTextures,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com