0

アプリに少し問題があります。samsung galaxy S3 を使用してアプリを開発し、テストしましたが、すべて問題ありませんでした。しかし、ここに問題があります。アプリを完成させた後、他のデバイスでテストを開始しました。このアプリは、他の Galaxy S3 と Galaxy S では問題なく動作しました。しかし、Sony Xperia と LG Optimus Net Dual で実行しようとすると、画面が真っ暗になってしまいました。

さらに興味深いのは、これらのデバイスのアプリ、サウンド機能は問題なく、広告が表示され、アプリはタッチに完全に反応しますが、黒い画面しか描画しないことです! それは本当に奇妙です...彼らはopengles 2をサポートしていないようですが、彼らはサポートしており、AndroidバージョンはXperiaでは4.0 ICS、LGでは2.2です!

誰でもこれが何であるか知っていますか? または同様の問題がありますか?コードが必要な場合は、ここに投稿してください。助けてくれてありがとう!

編集:

私の負荷テクスチャ:

    public static int loadTexture(final int ResourceId, final int min_filter, final int mag_filter) {
    for (int i=0;i<nTextures;i++) if (Textures[i*2]==ResourceId) return Textures[i*2+1];
    int[] textureHandle = new int[1];

    GLES20.glGenTextures(1, textureHandle, 0);
     if (textureHandle[0] != 0)
        {
            final BitmapFactory.Options options = new BitmapFactory.Options();
            options.inScaled = false;
            final Bitmap bitmap = BitmapFactory.decodeResource(GLRenderer.mContext.getResources(), ResourceId, options);
            GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle[0]);
            GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, min_filter);
            GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, mag_filter);
            GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,GLES20.GL_CLAMP_TO_EDGE);
            GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,GLES20.GL_CLAMP_TO_EDGE);
            GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0,GLES20.GL_RGBA, bitmap, 0);
            bitmap.recycle();
        }
        if (textureHandle[0] == 0) throw new RuntimeException("Error loading texture.");
        Textures[nTextures*2]=ResourceId;
        Textures[nTextures*2+1]=textureHandle[0];
        nTextures++;
        return textureHandle[0];
}

編集2:

私のGLSurfaceViewの作成:

    GLActivityView(GLActivity context) {
        super(context);
        setEGLContextClientVersion(2);
//      getHolder().setFormat(PixelFormat.TRANSLUCENT);
//      setEGLConfigChooser(8, 8, 8, 8, 8, 8);
        renderer = new GLRenderer(context);
        setRenderer(renderer);
    }
4

1 に答える 1

0

おそらく、これらの電話機は NPOT 機能をサポートしていません。NPOT がサポートされていない場合は、テクスチャの寸法がすべて 2 のべき乗であることを確認する必要があります。

このように確認できます

static public boolean isNPOTSupported(GL10 gl) {
    String extensions = gl.glGetString(GL10.GL_EXTENSIONS);
    return extensions.indexOf("GL_OES_texture_npot") != -1;
}
于 2012-11-01T18:20:49.193 に答える