【问题标题】:libGdx: Coloring a meshlibGdx:为网格着色
【发布时间】:2015-12-04 13:19:50
【问题描述】:

您好,我想知道是否有办法从没有 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 shader mesh


    【解决方案1】:

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

    约翰

    【讨论】:

      猜你喜欢
      • 2016-05-08
      • 2012-06-04
      • 2021-11-05
      • 1970-01-01
      • 2012-04-26
      • 2021-10-06
      • 2018-09-27
      • 2011-07-01
      • 2016-08-07
      相关资源
      最近更新 更多