Android 如何为 GL_TEXTURE_EXTERNAL_OES 生成 mipmap

问题描述

当我将 cameraTexture 渲染为低分辨率 SurfaceView 时,它看起来像素化了。

似乎我需要为相机纹理生成 mipmap,但它不会以这种方式工作。

GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glGenTextures(1,glTextures,0);
GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,glTextures[0]);

GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,GLES20.GL_TEXTURE_MIN_FILTER,GL11.GL_LINEAR_MIPMAP_LINEAR);
GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,GLES20.GL_TEXTURE_MAG_FILTER,GLES20.GL_LINEAR);
GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,GLES20.GL_TEXTURE_WRAP_S,GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,GLES20.GL_TEXTURE_WRAP_T,GLES20.GL_CLAMP_TO_EDGE);

mInputSurfaceTexture = new SurfaceTexture(inputTexture);
mInputSurfaceTexture.setDefaultBufferSize(CCamera.SIZE.getWidth(),CCamera.SIZE.getHeight());
mInputSurfaceTexture.setOnFrameAvailableListener(new CameraFrameListener(),mGLHandler);
mInputSurface = new Surface(mInputSurfaceTexture);

# feed mInputSurface to camera service.

public void onFrameAvailable(SurfaceTexture surfaceTexture) {
    surfaceTexture.updateTexImage();
    GLES20.glGenerateMipmap(GLES11Ext.GL_TEXTURE_EXTERNAL_OES);   
    //GLES11Ext.glGenerateMipmapOES(GLES11Ext.GL_TEXTURE_EXTERNAL_OES);
}

顺便说一句,这是不同的:

GLES11Ext.glGenerateMipmapOES

GLES20.glGenerateMipmap

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)