我刚开始使用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中完成的,或者这里的错误是什么......