2つのテクスチャをロードしようとしましたが、ロードされるのは1つだけです

android opengl-es
2つのテクスチャをロードしようとしましたが、ロードされるのは1つだけです

すべてのオブジェクトが1つのスプライトシートを使用するゲームを作成しました。 今、私は独自のテクスチャを持つオブジェクトを作成しましたが、(少なくとも私の携帯電話では、Evoで)それはただ白い平面を示しています。 ただし、これはエミュレータでは正常に機能します。 これはテクスチャをロードするための私のコードです:

public void LoadTexture(GL10 gl, Context context) throws IOException {
    InputStream is = context.getAssets().open("Image.png");
    Bitmap bitmap = null;
    try{
        bitmap = BitmapFactory.decodeStream(is);
    }finally{
        try{
            is.close();
            is = null;
            gl.glGenTextures(1, texture,0);
            gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[0]);

            //Create Nearest Filtered Texture

            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);

            //Different possible texture parameters, e.g. GL10.GL_CLAMP_TO_EDGE
            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_REPEAT);
            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_REPEAT);

            //Use the Android GLUtils to specify a two-dimensional texture image from our bitmap
            GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);


            gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
            //Clean up


            bitmap.recycle();
        }catch(IOException e){

        }
    }

}

そして、別のクラスで:

public void LoadTexture(GL10 gl, Context context) throws IOException{
    InputStream is = context.getAssets().open("end.png");
    Bitmap bitmap = null;
    try{
        bitmap = BitmapFactory.decodeStream(is);
    }finally{
        try{
            is.close();
            is = null;
            gl.glGenTextures(1, texture,0);
            gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[0]);

            //Create Nearest Filtered Texture

            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);

            //Different possible texture parameters, e.g. GL10.GL_CLAMP_TO_EDGE
            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_REPEAT);
            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_REPEAT);

            //Use the Android GLUtils to specify a two-dimensional texture image from our bitmap
            GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);


            gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
            //Clean up


            bitmap.recycle();
        }catch(IOException e){

        }
    }
}

両方のクラスには、テクスチャを有効/無効にする描画フレームルーチンとプライベートメンバー( int [] texture = new int [1])があります。 変数を変更してみますが、とにかく同じことが起こります。 両方のテクスチャはonSurfaceCreated(GL10 gl、EGLConfig config)にロードされます。

  1  1


ベストアンサー

私は同様の問題に直面していましたが、あなたには当てはまらないかもしれません。 私がロードしようとしていた画像もアプリのアイコンであり、どういうわけかそれはロードしていませんでした

1


タイトルとURLをコピーしました