android中opengl纹理的int数组

android中opengl纹理的int数组,android,opengl-es,camera,Android,Opengl Es,Camera,我想给安卓系统的摄像头添加一些效果, 我在网上找到了一些东西,但我在制作纹理时被卡住了 我使用函数decodeYUV420SP()返回一个int[width*height]RGB数组,每个数组位置都有十六进制值 现在,我想为这个数组创建一个openGL纹理,但我不知道如何,我可以将每个十六进制值转换为它的R_G_B,并将其放入openGL,但它不起作用 我是这样做的: mNewTexture = new int[width*height*4] for(int i=0; i<mRGB

我想给安卓系统的摄像头添加一些效果, 我在网上找到了一些东西,但我在制作纹理时被卡住了

我使用函数decodeYUV420SP()返回一个int[width*height]RGB数组,每个数组位置都有十六进制值

现在,我想为这个数组创建一个openGL纹理,但我不知道如何,我可以将每个十六进制值转换为它的R_G_B,并将其放入openGL,但它不起作用 我是这样做的:

mNewTexture = new int[width*height*4]
    for(int i=0; i<mRGB.length; i=i+4){

        mNewTexture[i]   = getR(mRGB[i])   ;            //R
        mNewTexture[i+1] = getG(mRGB[i])   ;            //G
        mNewTexture[i+2] = getB(mRGB[i])   ;            //B
        mNewTexture[i+3] = getA(mRGB[i]);       //A

    }
然而有些事情正在发生,因为它不起作用


有什么想法吗?

为什么要尝试将int数组包装为FloatBuffer?大多数转换都是不必要的

只需获取原始纹理,将其包装在bytebuffer中,并将其传递给类型为GL_UNSIGNED_BYTE的glTexImage。无需根据现有阵列创建新阵列

gl.glTexImage2D(GL10.gl_纹理_2D,0,GL10.gl_RGBA,1024,512,0,GL10.gl_RGBA,GL10.gl_无符号_字节,ByteBuffer.wrap(mRGB))

        gl.glBindTexture(GL10.GL_TEXTURE_2D, tex);
        gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA, 1024, 512, 0, GL10.GL_RGBA, GL10.GL_FLOAT, FloatBuffer.wrap(mNewTexture));
        gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);