java - 加载图像 libgdx

标签 java android textures libgdx

所以我有两个独立的程序,但我在一个程序上加载图像时遇到问题,而在另一个程序上则无法加载图像。

在第一个图像中,我将图像作为纹理加载到 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"))

它会引发错误纹理宽度和高度必须是 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 1 和 1.x,则图像应该是 2 的幂,您可以在桌面或 android 配置中将 openGLES2 设置为 true,这假设您要从 android 2.3 开始使用,但对于较旧的是 ES 1.x 和 2 的幂,所以我建议您使用 GLES 2,因为在不久的将来,新的 libgdx 可能会删除旧的 GLES。

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

另一个建议是使用 Game 和 Screen 来更好地管理不同级别。

关于java - 加载图像 libgdx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21784173/

相关文章:

java - OpenJDK 1.8 是否支持 JFR?

java - 我可以在 OS X 中进行 Java 6 开发吗?

java - 如何从 Eclipse 插件获取包资源管理器中所选节点的完整路径?

java - 浏览器如何与 Flash Player 或 Java Applet 交互?

android - 新的pubspec Flutter插件声明导致MissingPluginException

swift - 使用 Swift 在 Mac OS 上进行 Metal 纹理映射

c++ - 当我传递纹理坐标 (OpenGL) 时没有任何显示

android - 在 Windows 上使用 Chrome for Android 中的远程调试功能的分步指南

java - 以编程方式分配时 CardView.setRadius() 不起作用

c# - 从顶部将纹理平铺到矩形