private ShaderProgram shader; private Mesh mesh; private PerspectiveCamera camera; private Matrix4 model = new Matrix4(); private float angle = 45; @Override public void create() { String vertexShader = "uniform mat4 u_MVPMatrix; \n" + "attribute vec4 vPosition; \n" + "void main() \n" + "{ \n" + " gl_Position = vPosition * u_MVPMatrix; \n" + "} \n"; String fragmentShader = "#ifdef GL_ES\n" + "precision mediump float;\n" + "#endif\n" + "void main() \n" + "{ \n" + " gl_FragColor = vec4 ( 1.0, 1.0, 1.0, 1.0 );\n" + "}"; shader = new ShaderProgram(vertexShader, fragmentShader); mesh = new Mesh(true, 4, 0, new VertexAttribute(Usage.Position, 3, "vPosition")); float[] squareVertices = { -0.5f, -0.5f, 0, 0.5f, -0.5f, 0, -0.5f, 0.5f, 0, 0.5f, 0.5f, 0,}; mesh.setVertices(squareVertices); } @Override public void resize(int width, int height) { camera = new PerspectiveCamera(60, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); camera.translate(0.0f, 0.0f, 1.0f); camera.lookAt(0, 0, 0); } @Override public void render() { angle += Gdx.graphics.getDeltaTime() * 40.0f; Gdx.gl20.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT); model.idt(); model.rotate(0, 0, 1, angle); camera.update(); shader.begin(); shader.setUniformMatrix("u_MVPMatrix", camera.combined.mul(model)); mesh.render(shader, GL20.GL_TRIANGLE_STRIP); shader.end(); }