【发布时间】:2014-10-28 07:39:53
【问题描述】:
我正在使用 libgdx 和其他简单相似的几何元素渲染一个简单的矩形网格。 Therse 将与我在游戏中设置的精灵进行交互。精灵的位置和其他属性以世界单位设置,并且在每次精灵绘制会话之前,我将相机设置如下:
camera.update();
batch.setProjectionMatrix(camera.combined);
一切正常,但我需要使用世界单位绘制网格。如何根据我的游戏世界数据提供着色器程序世界坐标(12.5f、30f 等)而不是(0f、1f)范围?我想绘制几个带纹理的网格,所以我需要与游戏中其他元素相关的坐标。
这是我如何绘制一个简单的矩形网格:
mesh = new Mesh(true, 4, 6,
new VertexAttribute(Usage.Position, 3, "a_position"),
new VertexAttribute(Usage.TextureCoordinates, 2, "a_texCoords"));
mesh.setVertices(new float[] {
-1.0f, -1.0f, 0, 0,1,
0.0f, -1.0f, 0,1,1,
0.0f, 0.0f, 0, 1,0,
-1.0f, 0.0f, 0, 0,0 });
mesh.setIndices(new short[] { 0, 1, 2, 2, 3, 0});
Gdx.graphics.getGL20().glEnable(GL20.GL_TEXTURE_2D);
Gdx.gl20.glActiveTexture(GL20.GL_TEXTURE);
createShader();
shader.begin();
mesh.render(shader, GL20.GL_TRIANGLES);
shader.end();
有什么方法可以将世界单位提供给网格顶点数组?
【问题讨论】:
标签: java libgdx opengl-es-2.0