libgdx,使用Mesh和ShaderProgram渲染形状

时间:2014-10-05 11:37:42

标签: java android libgdx shader mesh

我刚开始使用libgdx并希望使用Mesh和自定义ShaderProgram渲染一些2D形状。 我在OpenGL方面很有经验,但我没有看到我的错误,也许有人可以帮助我。

着色器非常基本,顶点:

attribute vec2 v;

uniform mat4 o;

void main(){
    gl_Position = vec4(o*vec3(v, 1.0), 1.0);
}

片段:

#ifdef GL_ES
precision mediumhp float;
#endif

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

网格(四边形100x100px):

Mesh mesh = new Mesh(true, 4, 6, new VertexAttribute(Usage.Position, 2, "v"));
mesh.setVertices(new float[]{0, 0,
                             100, 0,
                             0, 100,
                             100, 100});
mesh.setIndices(new short[]{0, 1, 3, 0, 3, 2});

渲染阶段:

Matrix4 o = new Matrix4(); // also tried OrthographicCamera and SpriteBatch.getProjectionMatrix() here...
o.setToOrtho2D(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

shader.begin();
shader.setUniformMatrix(shader.getUniformLocation("o"), o);
mesh.render(shader, GL20.GL_TRIANGLES);
shader.end();

就是这样。我完全没有输出,黑屏。 当然我清除屏幕和一切,SpriteBatch(我也用于不同的目的)只是工作正常。但我不明白这是如何在libgdx中完成的,或者这里的错误是什么......

0 个答案:

没有答案