android openGL ES动态壁纸 - 什么时候加载和创建纹理?

时间:2012-03-01 19:10:01

标签: android opengl-es

我正在尝试制作一个使用多种纹理的openGL动态壁纸。其中一些是非常大的全屏图像。

我不确定如何加载位图和绑定纹理。例如,我可以在onSurfaceCreated()方法中加载它们:

public void onSurfaceCreated(GL10 gl, EGLConfig config){    
     ...
     Bitmap background = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.background, null);
     gl.glGenTextures(1, backgroundTextureArray, 0);
     gl.glBindTexture(GL10.GL_TEXTURE_2D, backgroundTextureArray[0]);
     gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
     gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
     GLUtils.texImage2D(GL10.GL_TEXTURE_2D,0, background,0);
}

然而,我相信这意味着每次壁纸变得可见时,它都必须再次将图像加载到内存中。考虑到壁纸经常进出视图,这似乎不是一个好主意。

还有另一种设置纹理的方法吗?我不确定程序运行时会发生什么,需要额外的内存。如果可以杀死LWP,那么也许我可以在壁纸服务还活着时永久存储位图?

0 个答案:

没有答案