2012-02-28 10 views
0

私のアプリのあるポイントでは、ポリゴンのテクスチャを変更する必要があります。スレッド内のポリゴンのテクスチャを変更する際の問題....白いテクスチャ

私は資産フォルダからビットマップをロードし、ビットマップをテクスチャを変更するポリゴンの「loadBitmap」メソッドに渡す必要があります。

ビットマップの読み込み時間が資産フォルダからビットマップをロードしているときに私のOpenGLポリゴンを凍らせているので、コードをスレッドに移動する必要があります。

テクスチャを変更するために呼び出されたスレッドを実装したが、スレッドを使用するとテクスチャが空(白い)なので何かがうまくいかないため、スレッドを使用しないと機能する私のスレッドコード:

public class addNextPage extends Thread 
{ 
    GL10 gl; 
    public addNextPage(GL10 gl) { 
     super(); 
     this.gl = gl; 
    }  
    public void run() 
    { 
     super.run(); 

     Bitmap bm=loadImage(pages.get(0)); 
     auxSquare.loadBitmap(context, gl, bm); 
     squares.set(3,auxSquare); 

     currentPage+=1;     
     //vuelvo a recolocar los squares 
     int posCont=-2; //el primer polígono está a la izquierda, no se ve. 
     for (int i=0;i<squares.size();i++){ 
      if (squares.get(i)!=null) 
       squares.get(i).setPosition(posCont,0); 
      posCont+=2; 
     }   
    } 
} 

答えて

0

なぜスーパーに電話しますか?多分これは動作します:

public class addNextPage extends Thread { 
GL10 gl; 
public addNextPage(GL10 gl) { 
    this.gl = gl; 
}  
public void run() 
{ 

    Bitmap bm=loadImage(pages.get(0)); 
    auxSquare.loadBitmap(context, gl, bm); 
    squares.set(3,auxSquare); 

    currentPage+=1;     
    //vuelvo a recolocar los squares 
    int posCont=-2; //el primer polígono está a la izquierda, no se ve. 
    for (int i=0;i<squares.size();i++){ 
     if (squares.get(i)!=null) 
      squares.get(i).setPosition(posCont,0); 
     posCont+=2; 
    }   
} 

}

+0

はい私は、doesntの作品を、それをしようと試み – NullPointerException

0

どこtexImage2Dを呼ぶのですか?メインレンダリングスレッドで呼び出される必要があります。または、バックグラウンドスレッド用の2番目のOpenGLコンテキストを作成します。

私は別の質問への答えとして、別のスレッドでテクスチャをアップロードするためのJavaのみのソリューションを説明した:Threading textures load process for android opengl game

関連する問題