Android: OpenGL перезагружает текстуры - PullRequest
1 голос
/ 02 февраля 2012

Я пытаюсь добавить загрузочный экран в мое приложение, так как загрузка текстур занимает некоторое время. Это то, что я делал раньше ...

 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 голосов
/ 02 февраля 2012

Контекст OpenGL ES назначается потоку. Итак, если вы хотите создать контекст в одном потоке и использовать его в другом потоке, вам следует вызвать функцию eglMakeCurrent(...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...