【发布时间】:2016-02-15 23:40:24
【问题描述】:
我在尝试为我尝试制作的第一个游戏运行 DesktopLauncher 时遇到此错误:
Fragment shader failed to compile with the following errors:
ERROR: error(#272) Implicit version number 110 not supported by GL3 forward compatible context
ERROR: error(#273) 1 compilation errors. No code generated
at com.badlogic.gdx.graphics.g2d.SpriteBatch.createDefaultShader(SpriteBatch.java:157)
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:120)
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:73)
at com.cosmicluck.mygame.GameScreen.<init>(GameScreen.java:22)
at com.cosmicluck.mygame.MyGame.create(MyGame.java:12)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:147)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)
现在,当我环顾四周试图找出我做错了什么时,我遇到了一个解决方案,该解决方案说使用以下命令指定 GLSL 的版本:
#version 150
但我的问题是我不知道把它放在哪里,有人告诉我把它放在我的着色器中,但据我所知我没有着色器。无论哪种方式,这是我的代码:
桌面启动器:
package com.cosmicluck.mygame.desktop;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.cosmicluck.mygame.MyGame;
public class DesktopLauncher {
public static void main (String[] arg) {
LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
new LwjglApplication(new MyGame(), config);
config.title = "Test";
config.resizable = true;
}
}
MyGame 类(创建游戏画面):
package com.cosmicluck.mygame;
import com.badlogic.gdx.Game;
public class MyGame extends Game {
public GameScreen game_screen;
@Override
public void create() {
Assets.load();
game_screen = new GameScreen(this);
setScreen(game_screen);
}
}
GameScreen 类:
package com.cosmicluck.mygame;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
public class GameScreen implements Screen{
MyGame game;
OrthographicCamera camera;
SpriteBatch batch;
public GameScreen(MyGame game){
this.game = game;
camera = new OrthographicCamera();
camera.setToOrtho(true, 1920, 1080);
batch = new SpriteBatch();
}
@Override
public void show() {
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0.95F, 0.95F, 0.95F, 0.95F);
Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(Assets.sprite_background, 0, 0);
batch.end();
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
}
@Override
public void resize(int width, int height) {
}
}
再一次,任何可以用来帮助我的信息都会很棒!感谢您抽出宝贵时间查看此内容!
【问题讨论】: