gpt4 book ai didi

java - Libgdx - 基本着色器不工作

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

我是着色器和 OpenGL 的新手。阅读了一些教程后,我决定创建我的第一个着色器(使用 LibGDX)。

问题是屏幕全黑......

我的 Java 代码:

public class Application extends
ApplicationAdapter {

private ShaderProgram mShaderProgram;
private Mesh mMesh;

@Override
public void create() {
this.createMesh();

if (Gdx.graphics.isGL20Available()) {
this.createShaderProgram();
}

this.log("" + this.mShaderProgram.isCompiled()); // outputs "true"
}

private void createMesh() {
this.mMesh = new Mesh(true, 3, 4, VertexAttribute.Position());

this.mMesh.setIndices(new short[] { 0, 1, 2 });
this.mMesh.setVertices(new float[] {
-0.5f, -0.5f, 0,
0f, 0.5f, 0,
0.5f, -0.5f, 0
});
}

private void createShaderProgram() {
final FileHandle fragmentShader = Gdx.files.internal("fragment.txt");
final FileHandle vertexShader = Gdx.files.internal("vertex.txt");

this.mShaderProgram = new ShaderProgram(vertexShader, fragmentShader);
}

@Override
public void dispose() {
this.mMesh.dispose();
if (this.mShaderProgram != null) {
this.mShaderProgram.dispose();
}
}

private void log(final String message) {
Gdx.app.log("", message);
}

@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

if (Gdx.graphics.isGL20Available()) {
this.mShaderProgram.begin();
this.mMesh.render(this.mShaderProgram, GL10.GL_TRIANGLES);
this.mShaderProgram.end();
}
else {
this.mMesh.render(GL10.GL_TRIANGLES);
}
}
}

我的片段着色器:

void main() {
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}

我的顶点着色器:

void main() {
gl_Position = ftransform();
}

使用 gl_Vertex 代替 ftransform() 没有改变任何东西。

最佳答案

您看不到任何东西的原因是您的顶点着色器没有执行任何操作。为了使代码正常工作,您需要让它至少执行以下操作:

顶点着色器:

#ifdef GL_ES
precision mediump float;
#endif

attribute vec4 a_position;

void main()
{
gl_Position = a_position;
}

我建议您查看一些着色器教程,以更好地了解着色器在 OpenGL ES 中的工作原理。

为了快速解释上述着色器代码,您将在网格中为“a_position”属性设置顶点属性。顶点着色器只是将该位置信息传递给片段着色器。然后,片段着色器将白色分配给所有要渲染的片段。

关于java - Libgdx - 基本着色器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17285185/

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