Android OpenGL一些纹理没有加载/重装

时间:2012-02-03 14:40:05

标签: android opengl-es textures

我似乎有一个奇怪的问题,在一部手机上两个纹理根本没有加载,因为它们看起来像白色矩形,但是,它们都加载到我的手机上。另一个问题是,在恢复加载屏幕显示的游戏时,这在第一次暂停应用程序时效果很好,但是在第二次恢复后,纹理不会加载到我的手机上...但是加载屏幕加载的纹理都会出现细

所有纹理都是2的幂,并且是024x1024 ......总共有大约20个纹理。

问题类型有哪些原因?

以下是重新加载的代码......

public void onSurfaceCreated(GL10 gl, EGLConfig config) {         
        super.onSurfaceCreated(gl, config);
        if(firstTimeCreate) {
            load();            //load settings
            Assets.Load(this);
            firstTimeCreate = false;            
        } else {
            //When screen is resumed....
            Assets.ReloadLoadingScreen();
        }

这就是一切,这就是加载方法......

GL10 gl = glGraphics.getGL();
        int[] textureIds = new int[1];
        gl.glGenTextures(1, textureIds, 0);
        textureId = textureIds[0];

        InputStream in = null;
        try {
            in = fileIO.readAsset(fileName);
            Bitmap bitmap = BitmapFactory.decodeStream(in);
            gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
            GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
            setFilters(GL10.GL_LINEAR , GL10.GL_LINEAR);         
            gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);
            width = bitmap.getWidth();
            height = bitmap.getHeight();
            bitmap.recycle();
        } catch(IOException e) {
            throw new RuntimeException("Couldn't load texture '" + fileName +"'", e);
        } finally {
            if(in != null)
                try { in.close(); } catch (IOException e) { }
        }

和绑定方法......

public void bind() {
GL10 gl = glGraphics.getGL();
        gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
}

不要以为上面有什么问题,但可能有吗?

1 个答案:

答案 0 :(得分:0)

我认为我们需要更多细节来正确指出正确的方向。不幸的是,有很多事情可能导致这个问题。

你是否正在加载你的纹理 onSurfaceCreated ?暂停应用程序并恢复时,需要在OpenGL中重新绑定这些纹理。

另外,如果您使用Eclipse,LogCat窗口中是否有任何错误?

您可能想要做的一件事是启用OpenGL调试标志进行测试。你可以在这里找到相关信息:

http://developer.android.com/resources/articles/glsurfaceview.html