【问题标题】:Loading images libgdx加载图像 libgdx
【发布时间】:2014-02-14 16:13:59
【问题描述】:

所以我有两个独立的程序,但是我在一个程序上加载图像时遇到了问题。

在第一个中,我将一个图像作为纹理加载到 mainGameScreen.java 中,大小为 800x480 像素。

Texture img1;
img1= new Texture(Gdx.files.internal("bg1.png"));

加载完全没有问题

所以第一个问题是为什么一个加载而另一个不加载,即使第一个只是第二个的横向版本。

在我的第二个程序中,我有一个 480x800 的图像。但是我在 Images.java 中加载它。

public class Images{
    public static Texture img2;
    public static void load(){
        img2 = new Texture (Gdx.files.internal("bg2.PNG"))

它会引发错误Texture width and height must be a power of 2

但是,如果我将图像的大小更改为 512x512,那么它不会引发任何错误,但是当我渲染它时,我会得到一个带有静态颜色的空白屏幕。

然后在我的 MyRenderer.java 文件中,我有一个批次,我将它绘制到我的批次中。

public class MyRenderer{
    OrthographicCamera camera;
    public MyRenderer(){
        camera = new OrthographicCamera();
        camera.position.set(0, 0, 0);

    public void update;
        camera.update();
        batch.SetProjectionMatrix(camera.combined)
        batch.begin();
        batch.draw(Images.img2, 0, 0);
        batch.end ();

【问题讨论】:

  • 您在两个程序中都使用 OpenGL ES 2.0 吗? OpenGL ES 2.0 似乎不再需要“二的幂”纹理,OpenGL Es 1.x 需要。所以只需比较您的 2 个程序的 OpenGL 版本。
  • @Springrbua 谢谢,我回家后试试

标签: java android textures libgdx


【解决方案1】:

如果您使用 OpenGl ES 1 和 1.x,图像应该是 2 的幂,您可以在桌面或 android 配置中将 openGLES2 设置为 true,这假设您要从 android 2.3 到更高版本使用,但对于较旧的是 ES 1.x 和 2 的幂,所以我建议您使用 GLES 2,因为在不久的将来在新的 libgdx 上可能会删除旧的 GLES。

首先确保您在 dispose() 上处理 SpriteBatch 和 Texture 将 dispose() 方法添加到您的 Images 类并处理所有纹理,因为您使用的是静态图像,所以您在整个类中有一个纹理,因此删除静态并使用字段,第二我建议您使用 Sprite 来轻松控制图像并使用批处理来渲染该 sprite。第三,您在我认为不好的一类中使用静态图像,请使用私有字段作为纹理。

另一个建议是使用游戏和屏幕来更好地管理不同的关卡。

【讨论】:

  • 仅供参考,我有单独的游戏类,然后我有一个 MainMenuScreen 类,然后是 GameScreen 类,但感谢您提供的信息。
猜你喜欢
  • 2012-12-19
  • 2015-06-23
  • 1970-01-01
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 2013-09-02
  • 1970-01-01
相关资源
最近更新 更多