我是 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/