如何在 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镜像文件?
首先,您的压缩器是否配置为将宽度和高度四舍五入到最接近的幂或两倍,从而用黑色填充图像?如果是这样,请离线修复此问题(不要填充)或调整您的纹理坐标。
其次,如果输入的纹理是正确的,则屏幕上纹理的大小与纹理图像的大小无关;它取决于三角形的输入几何形状和每个顶点的纹理坐标。您如何在屏幕上绘制四边形?
我有一个压缩的 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镜像文件?
首先,您的压缩器是否配置为将宽度和高度四舍五入到最接近的幂或两倍,从而用黑色填充图像?如果是这样,请离线修复此问题(不要填充)或调整您的纹理坐标。
其次,如果输入的纹理是正确的,则屏幕上纹理的大小与纹理图像的大小无关;它取决于三角形的输入几何形状和每个顶点的纹理坐标。您如何在屏幕上绘制四边形?