public class NewMap { int vaoID; int vertexBufferID; int indexBufferID; Shader shader = ShaderManager.getShader("SimpleColor"); int indexCount; public NewMap() { VertexData v0 = new VertexData(); v0.setXYZ(-1, -1, 0); v0.setNXYZ(0, 0, -1); v0.setUV(0, 0); VertexData v1 = new VertexData(); v1.setXYZ(0, 1, 0); v1.setNXYZ(0, 0, -1); v1.setUV(1, 1); VertexData v2 = new VertexData(); v2.setXYZ(1, -1, 0); v2.setNXYZ(0, 0, -1); v2.setUV(1, 0); VertexData[] data = new VertexData[] {v0, v1, v2}; FloatBuffer vertBuffer = BufferUtils.createFloatBuffer(data.length * VertexData.elementCount); for(int i = 0; i < data.length; i++) { vertBuffer.put(data[i].getElements()); } vertBuffer.flip(); byte[] indices = new byte[] { 0, 1, 2 }; indexCount = indices.length; ByteBuffer indexBuffer = BufferUtils.createByteBuffer(indices.length); indexBuffer.put(indices); indexBuffer.flip(); vaoID = GL30.glGenVertexArrays(); GL30.glBindVertexArray(vaoID); vertexBufferID = GL15.glGenBuffers(); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertexBufferID); GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertBuffer, GL15.GL_STATIC_DRAW); GL20.glVertexAttribPointer(0, VertexData.positionElementCount, GL11.GL_FLOAT, false, VertexData.stride, VertexData.positionOffset); GL20.glVertexAttribPointer(1, VertexData.textureElementCount, GL11.GL_FLOAT, false, VertexData.stride, VertexData.textureOffset); GL20.glVertexAttribPointer(2, VertexData.normalElementCount, GL11.GL_FLOAT, false, VertexData.stride, VertexData.normalOffset); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); GL30.glBindVertexArray(0); indexBufferID = GL15.glGenBuffers(); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, indexBufferID); GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, indexBuffer, GL15.GL_STATIC_DRAW); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0); GL20.glUseProgram(shader.getID()); GL20.glBindAttribLocation(shader.getID(), 0, "inPosition"); GL20.glBindAttribLocation(shader.getID(), 1, "inTexCoord"); GL20.glBindAttribLocation(shader.getID(), 2, "inNormal"); GL20.glUseProgram(0); } public void render(Camera cam) { GL20.glUseProgram(shader.getID()); shader.setUniformMatrix("projMat", cam.getProjection()); shader.setUniformMatrix("viewMat", cam.getView()); shader.setUniformMatrix("modelMat", new Matrix4f()); shader.setUniformVec("lightDirection", new Vector3f(0, 0, 1)); shader.setUniformVec("diffuseColor", new Vector4f(1, 1, 1, 1)); shader.setUniformVec("ambientColor", new Vector4f(0.15f, 0.15f, 0.15f, 1f)); GL30.glBindVertexArray(vaoID); GL20.glEnableVertexAttribArray(0); GL20.glEnableVertexAttribArray(1); GL20.glEnableVertexAttribArray(2); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, indexBufferID); GL11.glDrawElements(GL11.GL_TRIANGLES, indexCount, GL11.GL_UNSIGNED_BYTE, 0); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0); GL20.glDisableVertexAttribArray(0); GL20.glDisableVertexAttribArray(1); GL20.glDisableVertexAttribArray(2); GL30.glBindVertexArray(0); GL20.glUseProgram(0); } }