将OpenGL RGBA字节数组转换为android ARGB字节数组

时间:2019-05-31 05:52:34

标签: android opengl-es

我可以使用以下代码来实现将OpenGL RGBA int数组转换为android ARGB int数组。

      int b[]=new int[(int) (w*h)];
        int bt[]=new int[(int) (w*h)];
        IntBuffer buffer=IntBuffer.wrap(b);
        buffer.position(0);
        GLES20.glReadPixels(0, 0, w, h,GLES20.GL_RGBA,GLES20.GL_UNSIGNED_BYTE, buffer);
        for(int i=0; i<h; i++)
        {
            //remember, that OpenGL bitmap is incompatible with Android bitmap
            //and so, some correction need.
            for(int j=0; j<w; j++)
            {
                int pix=b[i*w+j];
                int pb=(pix>>16)&0xff;
                int pr=(pix<<16)&0x00ff0000;
                int pix1=(pix&0xff00ff00) | pr | pb;
                bt[(h-i-1)*w+j]=pix1;
            }
        } 

通过我可以使用将int数组转换为字节数组来实现我的目标,但是效率有点低,所以我想使用以下代码来实现相同的目标:

final ByteBuffer rgbaData = ByteBuffer.allocateDirect(WIDTH * HEIGHT * 4);
GLES20.glReadPixels(0, 0, WIDTH, HEIGHT, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, rgbaData),

0 个答案:

没有答案