java - libGDX 对 SpriteBatch 中的默认顶点着色器抛出错误

标签 java eclipse libgdx game-engine scene2d

我是 libGDX 的新手,正在使用它来完成一个学校项目的大型游戏。我一直在关注大部分代码的在线教程,但由于顶点着色器错误似乎无法运行。 错误:

Fragment shader: ERROR: 0:1: '' : #version required and missing. ERROR: 0:7: 'varying' : syntax error: syntax error at com.badlogic.gdx.graphics.g2d.SpriteBatch.createDefaultShader(SpriteBatch.java:161) at com.badlogic.gdx.graphics.g2d.SpriteBatch.(SpriteBatch.java:124) at com.badlogic.gdx.graphics.g2d.SpriteBatch.(SpriteBatch.java:78) at com.tootireddevelopmentco.games.Splash.show(Splash.java:41) at com.badlogic.gdx.Game.setScreen(Game.java:61) at com.tootireddevelopmentco.games.RabbitRun.create(RabbitRun.java:17) at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:149) at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)

我没有任何着色器经验,也没有在我的项目期间创建着色器,或声明任何类型的版本。着色器错误似乎可以追溯到我的程序中创建的 SpriteBatch。我的代码有问题吗?还是 libGDX 和我的设置有问题。

我的类(class)中的一些额外代码: 从启动类 - 错误指向 SpriteBatch 声明。

public void show() {
    // apply preferences

    batch = new SpriteBatch();

    tweenManager = new TweenManager();
    Tween.registerAccessor (Sprite.class, new SpriteAccessor ());

    splash = new Sprite(new Texture ("img/splash.png"));

    Tween.set (splash, SpriteAccessor.ALPHA).target(0).start(tweenManager); 
    Tween.to(splash, SpriteAccessor.ALPHA, 1.5f).target(1).repeatYoyo(1, 2).setCallback(new TweenCallback () {

        @Override
        public void onEvent(int arg0, BaseTween<?> arg1) {
            // TODO Auto-generated method stub
            ((Game) Gdx.app.getApplicationListener()).setScreen (new MainMenu ());
        }
        });

}

谢谢, Julia

最佳答案

这看起来像是 gles2.0 与 3.0 的问题。

SpriteBatch 不支持 GLES 3,除非您使用 GLES 3 兼容着色器。

需要检查的一件事是您不要尝试强制您使用 libGDX 到 gles 3.0。

在代码中搜索 useGL30(在您的 LwjglApplicationConfiguration 对象上调用它,就像 myLwjglAppConfig.useGL30 = false;),如果是的话设置为 true,然后删除该行或将其设置为 false。

关于java - libGDX 对 SpriteBatch 中的默认顶点着色器抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44060893/

相关文章:

android - 项目未建由于

android-studio - 错误 : Failed to resolve: com. badlogicgames.gdx :gdx-backend-lwjgl:1. 6.5

java - 在 libgdx 3D 中对立方体进行纹理化

javascript - Spring Boot获取复选框值

java - 如何强制 Java 在实例化时重新加载类?

Java TimerTask 取消不起作用

java - 由于 getClass() 导致自反调用出错

java - 有没有办法在 Android 中确定 Activity 的内容 View 是否已创建/显示?

java - Eclipse 无法识别 java api

java - 在 libgdx 中部署到 Web 时替换 isInstance() 方法