6

2.2 から 4.1 までのさまざまな Android バージョンを実行しているデバイスで動作する OpenGL ES2.0 アプリがあります。ただし、Android 4.2 を搭載した Nexus 7 で実行すると、アプリの 3D グラフィックがすべて黒くなると言われました。ただし、アクション バーとダイアログは問題なく動作します。Intel Atom プロセッサ、HAX、および GPU が有効な 4.2.2 を実行するエミュレートされた Nexus 7 で試してみましたが、問題なく動作します。ARM イメージを実行したかったのですが、Open GL ES2.0 が含まれていないようです。

Nexus 7 でこの問題を引き起こしている原因とその回避方法について、誰か洞察を持っている人はいますか?

1 つの可能性は、現在のアプリ バージョンのターゲット API レベルが 15 に設定されているのに対し、4.2.2 はレベル 17 であるということです。これは問題になる可能性がありますか? ただし、エミュレータでは問題なく動作します。

以下は、レンダラー onSurfaceCreated() でテクスチャを設定するために使用するコードです。

/**
 * Sets up texturing for the object
 */
private void setupTextures(String[] texFiles) {
    // create new texture ids if object has them
    // number of textures
    mTextureIDs = new int[texFiles.length];

    GLES20.glGenTextures(texFiles.length, mTextureIDs, 0);

    for(int i = 0; i < texFiles.length; i++) {
        GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureIDs[i]);

        // parameters
        GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,
                GLES20.GL_NEAREST);
        GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
                GLES20.GL_TEXTURE_MAG_FILTER,
                GLES20.GL_LINEAR);

        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,
                GLES20.GL_REPEAT);
        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,
                GLES20.GL_REPEAT);

        int ID = mContext.getResources().getIdentifier( texFiles[i], "raw", "com.antonymsoft.slidixcube" );
        InputStream is = mContext.getResources().openRawResource(ID);
        Bitmap bitmap;
        try {
            bitmap = BitmapFactory.decodeStream(is);
        } finally {
            try {
                is.close();
            } catch(IOException e) {
                // Ignore.
            }
        }

        // create it 
        GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
        bitmap.recycle();

    }
}
4

1 に答える 1

5

テクスチャのサイズは?16x32 512x512 1024x512 などのように、2 のべき乗にする必要があります。

于 2013-04-18T21:45:57.940 に答える