Как загрузить изображения в качестве фона в LibGDx?

Я делаю живые обои, и у меня есть одна проблема. Я хочу установить изображение в качестве фона и Eclipse показать ошибку:

01-10 10:37:18.206: E/AndroidRuntime(1045): FATAL EXCEPTION: GLThread 99 01-10 10:37:18.206: E/AndroidRuntime(1045): com.badlogic.gdx.utils.GdxRuntimeException: Texture width and height must be powers of two: 480x800 

Мой код выглядит так:

 public class Tapeta implements ApplicationListener { private SpriteBatch batch; private Texture texture; private TextureRegion region; @Override public void create() { texture = new Texture(Gdx.files.internal("data/cat.jpg")); Texture.setEnforcePotImages(false); } @Override public void dispose() { texture.dispose(); } @Override public void render() { Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); batch.begin(); batch.draw(texture, 0, 0); batch.end(); } @Override public void resize(int width, int height) { } @Override public void pause() { } @Override public void resume() { } } 

Я ищу решение своей проблемы, и я не нашел.

В этом случае сообщение об ошибке libGDX действительно полезно!

 Texture width and height must be powers of two: 480x800 

Таким образом, ширина и высота текстуры должны быть следующими: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 (ни 480, ни 800 в этом списке …)

У вас есть эта магическая линия:

 Texture.setEnforcePotImages(false); 

Но после загрузки текстуры. Если вы положили его перед загрузкой текстуры, исключение исключение? (Включение большего количества исключений в ваш вопрос было бы полезно). Я считаю, что этот метод доступен только в том случае, если вы знаете, что базовая система OpenGL ES 1.0 поддерживает расширение текстуры без использования двух сторон. Установка этого флага не будет исправлять аппаратное обеспечение, которое действительно не поддерживает текстуры с двумя характеристиками. (Я не знаю, сколько такого оборудования осталось в мире, хотя в наши дни это может быть безвредным.)

Требование текстуры «сила-два» – это ограничение аппаратного обеспечения и OpenGL ES. Это требование было исключено из OpenGL ES 2.0.

Еще один способ обойти это требование – построить атлас текстуры, который имеет мощность в два размера, и содержит в себе текстуры, не имеющие текстуры. Затем вы создаете подразделы изображения атласа. См. http://bitiotic.com/blog/2012/05/10/tutorial-for-texturepacker-and-libgdx/

Intereting Posts