我开始在libgdx前一天工作。我想创建一个三角形,其点应该是这样的,两个角落应该在左下角和右下角,并且在屏幕的顶部中间点上一个点。我正在使用透视相机。我的代码示例:libgdx关于位置单元的困惑
public class Test1 implements ApplicationListener{
PerspectiveCamera camera;
Mesh triangle;
@Override
public void create() {
// TODO Auto-generated method stub
camera = new PerspectiveCamera(67, 45, 45/(Gdx.graphics.getWidth()/(float)Gdx.graphics.getHeight()));
camera.near = 1;
camera.far = 200;
triangle = createTriangle();
}
@Override
public void resize(int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void render() {
// TODO Auto-generated method stub
GL10 gl = Gdx.gl10;
gl.glClearColor(0, 0, 0, 1);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glEnable(GL10.GL_DEPTH_TEST);
camera.update();
camera.apply(gl);
triangle.render(Gdx.gl10.GL_TRIANGLES);
}
public Mesh createTriangle() {
float[] vertices = {-45f, -27f, -67,
45f, -27f, -67,
0, 27f, -67
};
short[] indices = {0,1,2};
Mesh mesh = new Mesh(true, 3, 3, new VertexAttribute(Usage.Position, 3, ShaderProgram.POSITION_ATTRIBUTE));
mesh.setVertices(vertices);
mesh.setIndices(indices);
return mesh;
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
}
我读的是OpenGL是无单位的,所以我决定把45个单位宽,并相应地设置其高度。当我执行应用程序时,三角形不是我所期望的。它小于屏幕的宽度和高度。我没有3D的经验。请引导我,我错了吗? 下面是截图:
你提到的这个事情是不是我有这个问题。我想了解GL使用的屏幕单元,如何定义它们并适当使用? –
我编辑了我原来的帖子 – LiamJPeters