前日にlibgdxの作業を開始しました。2 つの角が左下と右下にあり、1 つの点が画面の中央上部にあるような三角形を作成したかったのです。遠近法カメラを使用しています。私のコード例は次のとおりです。
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 の経験はありません。どこが間違っているのか教えてください。スクリーンショットは次のとおりです。