gpt4 book ai didi

java - Libgdx - 黑屏之谜

转载 作者:行者123 更新时间:2023-11-30 06:16:29 25 4
gpt4 key购买 nike

我想使用 libGDX 中的 Mesh 类做一个简单的渐变。这应该是一个包含渐变的绘制矩形,但问题是矩形完全是黑色的!

我的代码:

public class HomeScreen extends
ScreenAdapter {

OrthographicCamera camera;
Mesh mesh;
ShaderProgram shader;

public HomeScreen() {
Logger.message("HomeScreen()", "^");
this.camera = new OrthographicCamera(2, 2);
this.mesh = new Mesh(false, 4, 4,
new VertexAttribute(Usage.Position, 3, ShaderProgram.POSITION_ATTRIBUTE),
new VertexAttribute(Usage.ColorPacked, 4, ShaderProgram.COLOR_ATTRIBUTE)
);
this.shader = SpriteBatch.createDefaultShader();

this.camera.position.set(0, 0, 0);
this.camera.update();
this.mesh.setVertices(new float[] {
-0.5f, -0.5f, 0, Color.BLUE.toFloatBits(),
-0.5f, 0.5f, 0, Color.RED.toFloatBits(),
0.5f, 0.5f, 0, Color.RED.toFloatBits(),
0.5f, -0.5f, 0, Color.BLUE.toFloatBits(),
});
this.mesh.setIndices(new short[] {
0, 1, 3, 2
});
Logger.message("HomeScreen()", "$");
}

@Override
public void dispose() {
Logger.message("HomeScreen.dipose()", "^");
this.mesh.dispose();
this.shader.dispose();
Logger.message("HomeScreen.dipose()", "$");
}

@Override
public void render(final float delta) {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
this.shader.begin();
this.shader.setUniformMatrix("u_projTrans", this.camera.combined);
this.mesh.render(this.shader, GL20.GL_TRIANGLE_STRIP);
this.shader.end();
}
}

结果:

http://snag.gy/oduhL.jpg

有什么想法吗?

最佳答案

libgdx 中 SpriteBatches 的默认着色器需要纹理才能工作。查看 shader code 时,你会看到,最终的结果是顶点颜色和纹理颜色的合成:

gl_FragColor = v_color * texture2D(u_texture, v_texCoords);

当不提供纹理时,顶点颜色将乘以 [0,0,0,0],从而产生黑色输出。

关于java - Libgdx - 黑屏之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27125253/

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