Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package renderer;
- import org.lwjgl.system.MemoryUtil;
- import java.nio.FloatBuffer;
- import static org.lwjgl.opengl.GL30.*;
- import static org.lwjgl.system.MemoryUtil.memFree;
- public class Buffer {
- private final float[] vertices;
- private int vaoId;
- private int vboId;
- public Buffer(float[] vertices) {
- this.vertices = vertices;
- init();
- }
- private void init() {
- FloatBuffer verticesBuffer = MemoryUtil.memAllocFloat(vertices.length);
- verticesBuffer.put(vertices).flip();
- vaoId = glGenVertexArrays();
- glBindVertexArray(vaoId);
- vboId = glGenBuffers();
- glBindBuffer(GL_ARRAY_BUFFER, vboId);
- glBufferData(GL_ARRAY_BUFFER, verticesBuffer, GL_STATIC_DRAW);
- memFree(verticesBuffer);
- glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0);
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glBindVertexArray(0);
- if (verticesBuffer != null) {
- MemoryUtil.memFree(verticesBuffer);
- }
- }
- public void destroy() {
- glDisableVertexAttribArray(0);
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glDeleteBuffers(vboId);
- glBindVertexArray(0);
- glDeleteVertexArrays(vaoId);
- }
- public void render(ShaderProgram program) {
- program.bind();
- glBindVertexArray(vaoId);
- glEnableVertexAttribArray(0);
- glDrawArrays(GL_TRIANGLES, 0, 3);
- glDisableVertexAttribArray(0);
- glBindVertexArray(0);
- program.unbind();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement