gpt4 book ai didi

java - 更改 GLSL 版本以与 GL3 兼容

转载 作者:行者123 更新时间:2023-12-01 10:24:47 25 4
gpt4 key购买 nike

当我尝试为我尝试制作的第一个游戏运行 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);
}
}

游戏屏幕类:

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) {
}
}

再次强调,任何可以帮助我的信息都会很棒!感谢您花时间查看此内容!

最佳答案

I don't have a shader as far as I can tell.

你可能不直接。但无论 com.badlogic.gdx.g2d.SpriteBatch 来自什么库,都会创建一个着色器。该着色器使用 GLSL 1.10。

就我个人而言,我会放弃任何在 GLSL 着色器中不使用 #version 声明的库。这表明开发人员严重无知和/或无能。有很多游戏框架可供使用,因此没有必要使用一个蹩脚的游戏框架。

但是,如果您坚持使用此工具,则您无法创建核心配置文件 OpenGL 上下文。因此,您的 LWJGL 初始化代码需要删除这些属性位(并且您不能使用任何高于 2.1 的 GL 版本,除非您不希望代码在 MacOSX 上运行)。您没有显示初始化代码,因此您必须自己解决。

关于java - 更改 GLSL 版本以与 GL3 兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35401106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com