【问题标题】:android opengl texture loading threadandroid opengl纹理加载线程
【发布时间】:2011-11-01 22:52:57
【问题描述】:

我正在开发一个应用程序,它需要在执行时在特定时间为帧动画加载纹理,渲染线程需要继续运行,我需要在 bg 线程中加载纹理。有没有办法在android中做到这一点?我可以通过在使用相同共享组的另一个线程上创建一个单独的 opengl 上下文来在 ios 中,但不确定在 android 上是否有类似的设施?

【问题讨论】:

    标签: android multithreading opengl-es


    【解决方案1】:

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

    eglCreateContext(display, config, rendering_context, attrs);
    

    然后在你的后台上下文中做这样的事情之后:

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

    然后,您可以在渲染上下文中绑定和使用tex

    【讨论】:

    • 好的,感谢您的快速响应,我对 android 上的 opengl 不是很熟悉,eglCreateContext 是从 ndk 还是 java 调用的方法?这就是我所要做的,创建上下文并加载纹理,然后杀死线程吗?谢谢
    • eglCreateContext() 是您在 C/C++ 中创建上下文的方式。我无法告诉您有关 Java 的信息,但可能有类似的东西。因此,您所要做的就是创建上下文,将您的渲染上下文传递给共享上下文。然后开始制作纹理,它们将在渲染上下文中使用相同的 GLuint。
    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多