2016-11-16 29 views
0

Androidでpkmテクスチャをアップロードしようとしています。私は画像を読んで、幅、高さ&のデータを正しく取得できますが、テクスチャは黒く表示されています。ETC2圧縮で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]; 
    } 

私は、データをロードするためにラジャワリのETC2Utilクラス(https://github.com/Rajawali/Rajawali/blob/master/rajawali/src/main/java/org/rajawali3d/materials/textures/utils/ETC2Util.java)の同様のクラスを使用しています。 データが正しくロードされていますが、テクスチャが黒くなっています。誰も助けることができますか?

答えて

0

私はついにそれを解決しました。私が使用している圧縮形式(GL_COMPRESSED_RGBA8_ETC2_EAC)は、GL_COMPRESSED_RGB8_ETC2に有効な1ピクセルあたり8ビットの画像サイズを計算しているところで、ピクセルあたり16ビットです。

関連する問題