gpt4 book ai didi

java - 带有 ETC2 压缩的 PKM 纹理导致黑屏

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:48 24 4
gpt4 key购买 nike

我正在尝试在 Android 中上传 pkm 纹理。我能够读取图像并正确获取其宽度、高度和数据,但纹理显示为黑色。

纹理加载函数:

public static int loadCompressedTexture(final Context context, final int resourceId){
final int[] textures = new int[1];
GLES30.glGenTextures(1, textures, 0);
Log.w(TAG, "ETC1 texture support: " + ETC1Util.isETC1Supported());
if (textures[0] != 0)
{
// Read in the resource
InputStream in = context.getResources().openRawResource(R.raw.bodyf1pkm);
ETC2Utils.ETC2Texture tex = null;
try {
tex = ETC2Utils.createTexture(in);
} catch (IOException e) {
Log.e(TAG,e.toString());
}
Log.d(TAG,"tex width: "+tex.getWidth());
Log.d(TAG,"tex height: "+tex.getHeight());

// Bind to the texture in OpenGL
GLES30.glBindTexture(GLES30.GL_TEXTURE_2D, textures[0]);

// Set filtering
GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_MIN_FILTER, GLES30.GL_NEAREST);
GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_MAG_FILTER, GLES30.GL_LINEAR);
GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_WRAP_S, GLES30.GL_REPEAT);
GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_WRAP_T, GLES30.GL_REPEAT);
// Load texture.
GLES30.glCompressedTexImage2D(GLES30.GL_TEXTURE_2D,0,tex.getCompressionFormat(),tex.getWidth(),tex.getHeight(),0,tex.getDataSize(),tex.getData());


}
return textures[0];
}

我正在使用 Rajawali 的 ETC2Util 类 ( https://github.com/Rajawali/Rajawali/blob/master/rajawali/src/main/java/org/rajawali3d/materials/textures/utils/ETC2Util.java ) 的类似类来加载数据。数据已正确加载,但纹理变黑。有人可以帮忙吗?

最佳答案

终于解决了。事实证明,我使用的压缩格式 (GL_COMPRESSED_RGBA8_ETC2_EAC) 是每像素 16 位,而我以每像素 8 位计算图像大小,这对 GL_COMPRESSED_RGB8_ETC2 有效

关于java - 带有 ETC2 压缩的 PKM 纹理导致黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40630773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com