【问题标题】:PKM texture with ETC2 Compression giving black screen具有 ETC2 压缩的 PKM 纹理给出黑屏
【发布时间】:2017-03-30 13:42:30
【问题描述】:

我正在尝试在 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) 来加载数据。 数据正在正确加载,但纹理变黑。有人可以帮忙吗?

【问题讨论】:

    标签: java android opengl-es texture-mapping


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-07-27
      • 2015-08-03
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      相关资源
      最近更新 更多