【问题标题】:LibGDX Sprite Screens not loading graphics, or loading up screensLibGDX Sprite 屏幕不加载图形或加载屏幕
【发布时间】:2014-10-24 11:36:43
【问题描述】:

我在我的 LibGDX 项目中遇到了这个问题,我基本上无法加载我的游戏屏幕,我正在关注一个 YouTube 教程(链接到我正在使用的特定教程:https://www.youtube.com/watch?v=LSblkR4K1LU),我发现我的精灵那应该会出现在我的屏幕上,只是它根本不会加载,它只是打开,关闭然后弹出:@ 987654322@,我承认我从视频中唯一改变的是:

@Override
public void render(float delta) {
    Gdx.gl.glClearColor(1F, 1F, 1F, 1F);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    camera.update();    

我将 GL10.GL_COLOR_BUFFER_BIT(视频中的)更改为 GL20.GL_COLOR_BUFFER_BIT,因为它给了我一个错误:GL10 无法解析为变量,有谁知道为什么,告诉我是否需要信息。

提前致谢。

编辑:

游戏画面类:

package com.edac.unforgivingunderground;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;


public class GameScreen implements Screen{

UnforgivingUnderground game;
OrthographicCamera camera;
SpriteBatch batch;

public GameScreen(UnforgivingUnderground game){
    this.game = game;

    camera = new OrthographicCamera();
    camera.setToOrtho(false,1920,1080);

    batch = new SpriteBatch();

} 

@Override
public void render(float delta) {
    Gdx.gl.glClearColor(1F, 1F, 1F, 1F);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    camera.update();

}

@Override
public void resize(int width, int height) {
    // TODO Auto-generated method stub

}

@Override
public void show() {
    // TODO Auto-generated method stub

}

@Override
public void hide() {
    // TODO Auto-generated method stub

}

@Override
public void pause() {
    // TODO Auto-generated method stub

}

@Override
public void resume() {
    // TODO Auto-generated method stub

}

@Override
public void dispose() {
    // TODO Auto-generated method stub

}

资产类别:

package com.edac.unforgivingunderground;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.Sprite;

public class Assets {


public static Texture texture_back;
public static Sprite sprite_back;

public static void load(){

    texture_back = new Texture(Gdx.files.internal("logo"));
    texture_back.setFilter(TextureFilter.Linear, TextureFilter.Linear);
    sprite_back = new Sprite(texture_back);
    sprite_back.flip(false, true);
}

}

桌面启动器:

package com.edac.unforgivingunderground.desktop;

import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.edac.unforgivingunderground.UnforgivingUnderground;

public class DesktopLauncher {
public static void main (String[] arg) {
    LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();

    new LwjglApplication(new UnforgivingUnderground(), config);
}

}

主类:

package com.edac.unforgivingunderground;

import com.badlogic.gdx.Game;

public class UnforgivingUnderground extends  Game{

public GameScreen game_screen;

@Override
public void create() {
    Assets.load();

    game_screen = new GameScreen(this);

    setScreen(game_screen);

}

【问题讨论】:

  • 您使用的视频已过时,libgdx 已停止支持 open GL 1.0 和许多其他更改,请输入您的其余代码以便我们提供帮助。
  • 我在其中编辑了代码,作为旁注,我对 java 很陌生,如果我有什么不明白的地方,对不起。

标签: java android eclipse libgdx


【解决方案1】:

不确定它为什么会崩溃(您应该发布堆栈转储),但可能是因为这一行:Gdx.files.internal("logo")。也许你的意思是logo.pnglogo.jpg。还要确保图像文件确实存在于您的资产文件夹中。

另外,我相信您的 render 方法缺少一行。:

@Override
public void render(float delta) {
    Gdx.gl.glClearColor(1F, 1F, 1F, 1F);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    camera.update();

    Assets.sprite_back.draw(batch);
}

这样您将通过 SpriteBatch 将您的精灵渲染到屏幕上。在您的代码中,您可以看到您没有使用它。

【讨论】:

  • GL10 该怎么办?
  • 我才意识到前面那句话的白痴,后来才知道GL是open GL,哈哈
  • 是的,在 GL10 中是 OpenGL ES 1.0 版的常量和方法,在 GL20 中是 2.0 版的,等等。你现在至少应该使用 GL20,那是我的错误。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
  • 2012-06-16
  • 1970-01-01
相关资源
最近更新 更多