如何在opengl中使用压缩纹理?

时间:2012-06-25 05:51:20

标签: android opengl-es

我想将.PVR图片用于纹理目的 为此,我使用PVRtextool并将我的pvr图片加载到drawables-mdpi中 现在,当我在我的项目中使用它时,应用程序崩溃了。

我错过了一些步骤吗? 请指导。

这是我遇到问题的加载纹理代码。 resource包含.pvr格式的图片。

static void loadTexture(GL10 gl, Context context, int[] resource)
   {  
       gl.glGenTextures(n, textureIDs, 0);
       BitmapFactory.Options opts = new BitmapFactory.Options();
       opts.inScaled = false;
       for (int face = 0; face < n; face++)
       {

           gl.glBindTexture(GL10.GL_TEXTURE_2D, textureIDs[face]);

           bitmap[face] = BitmapFactory.decodeResource(
            context.getResources(), resource[face],opts); 


           gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
           gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);


           GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap[face], 0);
                  bitmap[face].recycle();
}
]

1 个答案:

答案 0 :(得分:1)

您无法使用BitmapFactory.decodeResource()格式。您必须使用openRawResource()函数并将InputStream传递给ETC1Util.loadTexture()函数。

示例实现应位于/sdk/platforms/<version>/samples/CompressedTextureActivity.java,或在线版本为here.