Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class NewMap {
- int vaoID;
- int vertexBufferID;
- int indexBufferID;
- Image texture;
- Shader shader = ShaderManager.getShader("SimpleColor");
- int indexCount;
- public NewMap()
- {
- //--------------------------------------------------------
- VertexData v0 = new VertexData();
- v0.setXYZ(0, 0, 0); v0.setNXYZ(0, 0, -1); v0.setUV(0, 1);
- VertexData v1 = new VertexData();
- v1.setXYZ(1, 0, 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 v3 = new VertexData();
- v3.setXYZ(0, 1, 0); v3.setNXYZ(0, 0, -1); v3.setUV(0, 0);
- //--------------------------------------------------------
- VertexData v4 = new VertexData();
- v4.setXYZ(0, 0, 1); v4.setNXYZ(0, 0, 1); v4.setUV(0, 1);
- VertexData v5 = new VertexData();
- v5.setXYZ(1, 0, 1); v5.setNXYZ(0, 0, 1); v5.setUV(1, 1);
- VertexData v6 = new VertexData();
- v6.setXYZ(1, 1, 1); v6.setNXYZ(0, 0, 1); v6.setUV(1, 0);
- VertexData v7 = new VertexData();
- v7.setXYZ(0, 1, 1); v7.setNXYZ(0, 0, 1); v7.setUV(0, 0);
- //--------------------------------------------------------
- VertexData v8 = new VertexData();
- v8.setXYZ(0, 0, 1); v8.setNXYZ(-1, 0, 0); v8.setUV(0, 1);
- VertexData v9 = new VertexData();
- v9.setXYZ(0, 1, 1); v9.setNXYZ(-1, 0, 0); v9.setUV(1, 1);
- VertexData v10 = new VertexData();
- v10.setXYZ(0, 1, 0); v10.setNXYZ(-1, 0, 0); v10.setUV(1, 0);
- VertexData v11 = new VertexData();
- v11.setXYZ(0, 0, 0); v11.setNXYZ(-1, 0, 0); v11.setUV(0, 0);
- //--------------------------------------------------------
- VertexData v12 = new VertexData();
- v12.setXYZ(1, 0, 1); v12.setNXYZ(1, 0, 0); v12.setUV(0, 1);
- VertexData v13 = new VertexData();
- v13.setXYZ(1, 1, 1); v13.setNXYZ(1, 0, 0); v13.setUV(1, 1);
- VertexData v14 = new VertexData();
- v14.setXYZ(1, 1, 0); v14.setNXYZ(1, 0, 0); v14.setUV(1, 0);
- VertexData v15 = new VertexData();
- v15.setXYZ(1, 0, 0); v15.setNXYZ(1, 0, 0); v15.setUV(0, 0);
- VertexData[] data = new VertexData[] {v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15};
- 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,
- 2, 3, 0,
- 4, 5, 6,
- 6, 7, 4,
- 8, 9, 10,
- 10, 11, 8,
- 12, 13, 14,
- 14, 15, 12
- };
- 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.setUniformMatrix("normalMat", new Matrix3f());
- shader.setUniformFloat("shininess", 100);
- shader.setUniformVec("diffuse", new Vector4f(0, 0.5f, 0, 1f));
- shader.setUniformVec("ambient", new Vector4f(0, 0, 1,1));
- shader.setUniformVec("specular", new Vector4f(0, 0, 0, 1f));
- shader.setUniformVec("lightPos", cam.getPosition());
- 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);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement