gpt4 book ai didi

java - libGdx:为网格着色

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:44 24 4
gpt4 key购买 nike

您好,我想知道是否有一种方法可以在没有 VertexAtribute 颜色的情况下为网格中的三角形着色。但将其保存在单独的数组中。

编辑:

现在我想要的是顶点只有位置而没有颜色。

每个三角形的颜色应由保存颜色的单独数组设置。

我知道如何将统一发送到着色器,但渲染方法确实会渲染整个网格,而不是每个三角形。

public class TestBench implements ApplicationListener {

public static final String VERT_SHADER =
"attribute vec2 a_position;\n" +
"attribute vec4 a_color;\n" +
"uniform mat4 u_projTrans;\n" +
"varying vec4 vColor;\n" +
"void main() {\n" +
" vColor = a_color;\n" +
" gl_Position = u_projTrans * vec4(a_position.xy, 0.0, 1.0);\n" +
"}";

public static final String FRAG_SHADER =
"#ifdef GL_ES\n" +
"precision mediump float;\n" +
"#endif\n" +
"uniform vec4 aTest;\n" +
"varying vec4 vColor;\n" +
"void main() {\n" +
" gl_FragColor = vColor;\n" +
"}";

public void create() {
mesh = new Mesh(true, MAX_VERTS, MAX_INDICES,
new VertexAttribute(VertexAttributes.Usage.Position, POSITION_COMPONENTS, "a_position"),
new VertexAttribute(VertexAttributes.Usage.ColorUnpacked, COLOR_COMPONENTS, "a_color"));
}

public void render() {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
Gdx.gl.glClearColor(0, 0, 0, 1);

flush();
}

void flush() {
mesh.setVertices(vertices);
mesh.setIndices(indices);
Gdx.gl.glDepthMask(false);
Gdx.gl.glEnable(GL20.GL_BLEND);
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
shader.begin();
shader.setUniformMatrix("u_projTrans", camera.combined);
mesh.render(shader, GL20.GL_TRIANGLES, 0, vertices.lenght);
shader.end();
Gdx.gl.glDepthMask(true);
}
}

最佳答案

如果您提供更完整的代码示例,我将尝试向您展示如何在着色器中使用统一代码。

约翰

关于java - libGdx:为网格着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34089329/

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