Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package renderEngine;
- import org.lwjgl.LWJGLException;
- import org.lwjgl.opengl.ContextAttribs;
- import org.lwjgl.opengl.Display;
- import org.lwjgl.opengl.DisplayMode;
- import org.lwjgl.opengl.GL11;
- import org.lwjgl.opengl.PixelFormat;
- public class DisplayManager {
- private static final int WIDTH = 1280;
- private static final int HIGHT = 720;
- private static final int FPS = 120;
- public static void createDisplay() {
- ContextAttribs attribs = new ContextAttribs(3,2)
- .withForwardCompatible(true)
- .withProfileCore(true);
- try {
- Display.setDisplayMode(new DisplayMode(WIDTH, HIGHT));
- Display.create(new PixelFormat(), attribs);
- Display.setTitle("My first JavaOpenGL windows");
- } catch (LWJGLException e) {
- e.printStackTrace();
- }
- GL11.glViewport(0, 0, WIDTH, HIGHT);
- }
- public static void updateDisplay() {
- Display.sync(FPS);
- Display.update();
- }
- public static void closeDisplay() {
- Display.destroy();
- }
- }
- package renderEngine;
- import java.nio.FloatBuffer;
- import java.util.ArrayList;
- import java.util.List;
- import org.lwjgl.BufferUtils;
- import org.lwjgl.opengl.GL11;
- import org.lwjgl.opengl.GL15;
- import org.lwjgl.opengl.GL20;
- import org.lwjgl.opengl.GL30;
- import models.RawModel;
- public class Loader {
- private List<Integer> vaos = new ArrayList<Integer>();
- private List<Integer> vbos = new ArrayList<Integer>();
- public RawModel loadToVAO(float[] positions) {
- int vaoID = createVAO();
- storeDataInAttributeList(0, positions);
- unbindVAO();
- return new RawModel (vaoID, positions.length/3);
- }
- private void storeDataInAttributeList (int attributeNumber, float[] data) {
- int vboID = GL15.glGenBuffers();
- vbos.add(vboID);
- GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboID);
- FloatBuffer buffer = storeDataInFloatBuffer(data);
- GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer,GL15.GL_STATIC_DRAW);
- GL20.glVertexAttribPointer(attributeNumber, 3, GL11.GL_FLOAT,false, 0,0);
- GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER,0);
- }
- private int createVAO() {
- int vaoID = GL30.glGenVertexArrays();
- vaos.add(vaoID);
- GL30.glBindVertexArray(vaoID);
- return vaoID;
- }
- private FloatBuffer storeDataInFloatBuffer(float[] data) {
- FloatBuffer buffer =BufferUtils.createFloatBuffer(data.length);
- buffer.put(data);
- buffer.flip();
- return buffer;
- }
- private void unbindVAO() {
- GL30.glBindVertexArray(0);
- }
- public void cleanUp() {
- for(int vao:vaos) {
- GL30.glDeleteVertexArrays(vao);
- }
- for(int vbo:vbos) {
- GL15.glDeleteBuffers(vbo);
- }
- }
- }
- package models;
- public class RawModel {
- private int vaoID;
- private int vetexCount;
- public RawModel(int vaoID, int vertexCount) {
- this.vaoID = vaoID;
- this.vetexCount = vertexCount;
- }
- public int getVaoID() {
- return vaoID;
- }
- public int getVetexCount() {
- return vetexCount;
- }
- }
- package engineTester;
- import org.lwjgl.opengl.Display;
- import models.RawModel;
- import renderEngine.DisplayManager;
- import renderEngine.Loader;
- import renderEngine.Render;
- public class MainGameLoop {
- public static void main(String[] args) {
- DisplayManager.createDisplay();
- Loader loader = new Loader();
- Render render = new Render();
- float[] vertices = {
- -0.5f,0.5f,0f,
- -0.5f,-0.5f,0f,
- 0.5f,-0.5f,0f,
- 0.5f,-0.5f,0f,
- 0.5f,0.5f,0f,
- -0.5f,0.5f,0f
- };
- RawModel model = loader.loadToVAO(vertices);
- while(!Display.isCloseRequested()) {
- //game logic
- render.prepare();
- render.render(model);
- DisplayManager.updateDisplay();
- }
- DisplayManager.closeDisplay();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement