如何在 android opengl es 2.0 中解压纹理

how to decompression texture in android opengl es 2.0

我有一个压缩的 ETC1 texture.i 我正在使用下面的代码来解压和加载它,

 public void LoadCompressedTexture()
{
    GLES20.glGenTextures(1, bg_grid_tex_id, 0);

    InputStream input = mContext.getResources().openRawResource(R.raw.compressed_tex);
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D,bg_grid_tex_id[0]);

    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
    try{
        ETC1Util.loadTexture(GLES20.GL_TEXTURE_2D, 0, 0,GLES20.GL_RGB, GLES20.GL_UNSIGNED_SHORT_5_6_5, input);
    }
    catch(IOException e){
        System.out.println("DEBUG! IOException"+e.getMessage());
    }
}

我得到的图像形状符合预期,但尺寸很小,剩余部分用黑色填充。

有什么办法可以在解压前设置高宽,让解压后的图片尺寸发生变化??

能否分享原始压缩PKM镜像文件?

首先,您的压缩器是否配置为将宽度和高度四舍五入到最接近的幂或两倍,从而用黑色填充图像?如果是这样,请离线修复此问题(不要填充)或调整您的纹理坐标。

其次,如果输入的纹理是正确的,则屏幕上纹理的大小与纹理图像的大小无关;它取决于三角形的输入几何形状和每个顶点的纹理坐标。您如何在屏幕上绘制四边形?