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