Я пытаюсь сделать живые обои 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 можно убить, то, может быть, я смогу постоянно хранить растровые изображения, пока служба обоев жива?