Android OpenGL纹理加载线程

4
我正在开发一个应用,需要在运行时的某个时间加载帧动画所需的纹理,同时渲染线程需要继续运行,并且我需要在后台线程中加载纹理。在Android上是否有这样做的方法? 我能够在iOS上通过创建另一个线程上使用相同共享组的分离opengl上下文来实现,但不确定Android上是否有类似的功能?
1个回答

3

是的,您可以在上下文之间共享纹理(只要您的驱动程序支持)。像这样创建您的后台加载上下文(意味着您想与渲染上下文共享对象):

eglCreateContext(display, config, rendering_context, attrs);

在您的后台上下文中进行像这样的操作之后:

glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
glTexImage2D(...);

您可以绑定并从渲染上下文中使用tex

好的,感谢您的快速回复。我对Android上的OpenGL不是非常熟悉,eglCreateContext是从NDK还是Java中调用的方法?我只需要创建上下文,加载纹理,然后终止线程吗?谢谢。 - marchinram
eglCreateContext() 是在 C/C++ 中创建上下文的方法。我不知道 Java,但可能有类似的东西。所以你只需要创建上下文,传入你的渲染上下文作为共享上下文。然后开始制作纹理,它们将在渲染上下文中使用相同的 GLuint 变量名。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接