Android:OpenGL重新加载纹理

时间:2012-02-02 17:50:26

标签: android opengl-es textures

我正在尝试将加载屏幕添加到我的应用中,因为需要一些时间来加载纹理。这就是我以前做的......

 public void onSurfaceCreated(GL10 gl, EGLConfig config) {         
         super.onSurfaceCreated(gl, config);
         if(firstTimeCreate) {
             load();            //load settings
             Assets.LoadTextures(this);
             firstTimeCreate = false;} 
          else {
            //When screen is resumed....
            Assets.reloadTextures();}

这样在应用程序恢复后,else语句将生效并重新加载所有内容......我试图将其改编为此

else {
            //When screen is resumed....
            Thread aThread = new Thread()
            {
                public void run(){
                    boolean once = true;
                    while(once)
                    {
                        Assets.reloadTexutres();
                        once = false;
                    }
                }
            };
            aThread.start();
        }

然而,现在看来OpenGL无法绑定纹理,因为屏幕是白色的。通过向此方法添加线程会出现什么问题?在让OpenGL开始尝试渲染之前,是否需要等待所有纹理加载,如果是这样,我如何加载一个然后呈现加载屏幕,直到其余部分完成?

由于

1 个答案:

答案 0 :(得分:0)

将OpenGL ES上下文分配给一个线程。所以,如果你想在一个线程中创建上下文并在另一个线程中使用它,你应该调用eglMakeCurrent(...)函数。