0

グラフィックが表示されないのはなぜですか?私が得るのは白い四角だけです。写真は512x512です。

public void loadGLTexture(GL10 gl) {  

      imageData = ByteBuffer.allocate(mPicture512.length).order(ByteOrder.nativeOrder());
    imageData.put(mPicture512);  
    imageData.position(0); 
    // generate one texture pointer 
    gl.glGenTextures(1, textures, 0);
    // ...and bind it to our array 
//Bitmap bitmap = getBitmap(mContext);

//bitmap.getPixels(pixels, offset, stride, x, y, width, height)

    // create nearest filtered texture
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);

    gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]); 
    gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA, 512, 512, 0,GL10.GL_RGBA, GL10.GL_BYTE, imageData);

ps。私はこれが次のようにできることを知っており、それは機能しますが、これはパフォーマンスが重要なアプリであるため、最初にビットマップを作成するオーバーヘッドは必要ありません。

GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
4

3 に答える 3

2

glTexParameterテクスチャごとの状態を変更します。テクスチャをバインドする前にmin/magフィルタの設定が呼び出されるため、テクスチャに影響はありません。

したがって、テクスチャは引き続き最小フィルターのデフォルトのミップマッピングを使用しており、正しく表示されません。

于 2012-07-04T17:23:20.137 に答える
1

別の方法で画像をOpenGLにアップロードしてみませんか?

BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap bitmap = BitmapFactory.decodeStream(activity.getAssets().open(fileName));

GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);

gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
于 2012-07-04T17:16:10.603 に答える
0

生の写真ではなくヘッダーを持つビットマップPNGをロードしていた問題。

于 2012-07-05T13:54:33.590 に答える