массив int для текстуры opengl в android

Я пытаюсь добавить некоторые эффекты в камеру в Android, {{ 1}} Я нашел кое-что в Интернете, но я застрял при создании текстуры,

Я использую функцию 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

    }

Чтобы преобразовать шестнадцатеричное значение в RGBA (от 0 до 255)

И я делаю это, чтобы преобразовать его в текстуру openGL:

        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);

Однако что-то изношено, потому что это не работает ...

Есть идеи?

9
задан genpfault 13 October 2011 в 14:13
поделиться