2015-12-04 3 views
1

Здравствуйте, я хотел бы знать, есть ли способ покрасить треугольник из сетки без цвета VertexAtribute. Но сохраните его в отдельном массиве.libGdx: Окраска сетки

EDIT:

Теперь я whant, что вершины имеют только ПОЗИЦИЮ и не ЦВЕТА.

Цвет каждого треугольника должен быть задан отдельным массивом, который содержит цвет.

Я знаю, как отправить форму в шейдер, но метод рендеринга делает всю сетку в одном, а не в каждом треугольнике.

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); 
    } 
} 
+0

Невозможно. ____ – Tenfour04

ответ

0

Если вы дать более полный пример кода я постараюсь показать вам, как сделать это, используя форму в шейдерах.

John