예제 #1
0
  private void init() {
    System.out.println("LWJGL VERSION " + Version.getVersion());

    if (!glfwInit()) {
      throw new IllegalStateException("Init failed");
    }

    glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
    glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);

    winID = glfwCreateWindow(WORLD_X, WORLD_Y, "Cerberus", NULL, NULL);
    if (winID == NULL) throw new RuntimeException("FAILED TO CREATE WINDOW");

    glfwSetKeyCallback(
        winID,
        (window, key, scancode, action, mods) -> {
          if (key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE) {
            glfwSetWindowShouldClose(winID, true);
          }
        });

    long priMon = glfwGetPrimaryMonitor();
    GLFWVidMode vidmod = glfwGetVideoMode(priMon);

    glfwSetWindowPos(winID, (vidmod.width() - WORLD_X) / 2, (vidmod.height() - WORLD_Y) / 2);
    glfwMakeContextCurrent(winID);
    glfwShowWindow(winID);
  }
예제 #2
0
  public void init() {
    // if not true after being executed then it will fail. - THIS MUST RETURN TRUE IN ORDER TO
    // CONTINUE
    if (glfwInit() != GL_TRUE) {
      // Once GLFW is initialised - window can be created
      System.err.println("GLFW initialisation has failed");
      throw new IllegalStateException("Unable to initialize GLFW");
    }

    // indicate that the window we wish to create is to be made resizable
    glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);

    //           glfwCreateWindow(width, height, title, monitor, share)
    window = glfwCreateWindow(800, 600, "Mikes Tester Window", NULL, NULL);

    // if window is not populated with necessary bytes - then it fails
    if (window == NULL) {
      System.err.println("Failed to create window");
      glfwTerminate();
      throw new RuntimeException("Failed to create the GLFW window");
    }

    glfwSetKeyCallback(window, keyCallback = new Input());

    // Returns the video resolution of primary monitor
    GLFWVidMode vidMode = glfwGetVideoMode(glfwGetPrimaryMonitor());
    //

    int WIDTH = 300;
    int HEIGHT = 300;

    // Centre the window
    glfwSetWindowPos(window, (vidMode.width() - WIDTH) / 2, (vidMode.height() - HEIGHT) / 2);

    // Make the OpenGL context current
    glfwMakeContextCurrent(window);

    // library can detect the context and make the OpenGL bindings available for use.
    GL.createCapabilities();

    // Enable v-sync
    glfwSwapInterval(1);
    // show the window
    glfwShowWindow(window);

    // glClearColor(056f, 0.258f, 0.425f, 1.0f);

    glEnable(GL_DEPTH_TEST);

    System.out.println("OPenGL: " + glGetString(GL_VERSION));
  }
예제 #3
0
파일: Main.java 프로젝트: Osoldier/Vox
  private void InitWindow() {

    GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
    // Center window on the screen
    glfwSetWindowPos(window, (vidmode.width() - width) / 2, (vidmode.height() - height) / 2);
    // Set window events callbacks
    glfwSetKeyCallback(window, keyCallback = new Input());
    glfwSetWindowSizeCallback(window, sizeCallback = new ResizeHandler());
    glfwSetMouseButtonCallback(window, mouseCallback = new MouseHandler());
    glfwSetWindowFocusCallback(window, focusCallback = new FocusCallback());

    glfwMakeContextCurrent(window);
    glfwSwapInterval(0);
    glfwShowWindow(window);
  }
예제 #4
0
  private void init() {
    // Setup an error callback. The default implementation
    // will print the error message in System.err.
    glfwSetErrorCallback(errorCallback = GLFWErrorCallback.createPrint(System.err));

    // Initialize GLFW. Most GLFW functions will not work before doing this.
    if (glfwInit() != GLFW_TRUE) throw new IllegalStateException("Unable to initialize GLFW");

    // Configure our window
    glfwDefaultWindowHints(); // optional, the current window hints are already the default
    glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); // the window will stay hidden after creation
    glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); // the window will be resizable

    int WIDTH = 300;
    int HEIGHT = 300;

    // Create the window
    window = glfwCreateWindow(WIDTH, HEIGHT, "Hello World!", NULL, NULL);
    if (window == NULL) throw new RuntimeException("Failed to create the GLFW window");

    // Setup a key callback. It will be called every time a key is pressed, repeated or released.
    glfwSetKeyCallback(
        window,
        keyCallback =
            new GLFWKeyCallback() {
              @Override
              public void invoke(long window, int key, int scancode, int action, int mods) {
                if (key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE)
                  glfwSetWindowShouldClose(
                      window, GLFW_TRUE); // We will detect this in our rendering loop
              }
            });

    // Get the resolution of the primary monitor
    GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
    // Center our window
    glfwSetWindowPos(window, (vidmode.width() - WIDTH) / 2, (vidmode.height() - HEIGHT) / 2);

    // Make the OpenGL context current
    glfwMakeContextCurrent(window);
    // Enable v-sync
    glfwSwapInterval(1);

    // Make the window visible
    glfwShowWindow(window);
  }
예제 #5
0
  private static void initWindow(int w, int h) {
    HEIGHT = h;
    WIDTH = w;
    // Configure our window
    glfwDefaultWindowHints(); // optional, the current window hints are already the default
    glfwWindowHint(GLFW_VISIBLE, GL_FALSE); // the window will stay hidden after creation
    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
    glfwWindowHint(GLFW_DECORATED, GL_FALSE);
    glfwWindowHint(GLFW_DOUBLE_BUFFER, GL_TRUE);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 1);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
    // glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    // glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

    // Create the window
    window = glfwCreateWindow(WIDTH, HEIGHT, "GameEngine", glfwGetPrimaryMonitor(), NULL);
    if (window == NULL) throw new RuntimeException("Failed to create the GLFW window");

    // Get the resolution of the primary monitor
    GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
    // Center our window
    glfwSetWindowPos(window, (vidmode.width() - WIDTH) / 2, (vidmode.height() - HEIGHT) / 2);

    // Make the OpenGL context current
    glfwMakeContextCurrent(window);
    // GLContext.createFromCurrent();
    // Enable v-sync
    glfwSwapInterval(1);
    GL.createCapabilities();
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    // glEnable(GL_DEPTH_TEST);
    // glDepthFunc(GL_LESS);
    // glDepthMask(true);
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
    // glDisable(GL_DEPTH_TEST);

    glClearColor(0.20f, 0.10f, 0.20f, 1.0f);
  }
예제 #6
0
  public void init() {
    // Setup an error callback. The default implementation
    // will print the error message in System.err.
    glfwSetErrorCallback(errorCallback = GLFWErrorCallback.createPrint(System.err));

    // Initialize GLFW. Most GLFW functions will not work before doing this.
    if (glfwInit() != GL11.GL_TRUE) {
      throw new IllegalStateException("Unable to initialize GLFW");
    }

    glfwDefaultWindowHints(); // optional, the current window hints are already the default
    glfwWindowHint(GLFW_VISIBLE, GL_FALSE); // the window will stay hidden after creation
    glfwWindowHint(GLFW_RESIZABLE, GL_TRUE); // the window will be resizable

    // Create the window
    windowHandle = glfwCreateWindow(width, height, title, NULL, NULL);
    if (windowHandle == NULL) {
      throw new RuntimeException("Failed to create the GLFW window");
    }

    // Setup resize callback
    glfwSetWindowSizeCallback(
        windowHandle,
        windowSizeCallback =
            new GLFWWindowSizeCallback() {
              @Override
              public void invoke(long window, int width, int height) {
                Window.this.width = width;
                Window.this.height = height;
                Window.this.setResized(true);
              }
            });
    // Setup a key callback. It will be called every time a key is pressed, repeated or released.
    glfwSetKeyCallback(
        windowHandle,
        keyCallback =
            new GLFWKeyCallback() {
              @Override
              public void invoke(long window, int key, int scancode, int action, int mods) {
                if (key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE) {
                  glfwSetWindowShouldClose(window, GL_TRUE);
                }
              }
            });

    // Get the resolution of the primary monitor
    GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
    // Center our window
    glfwSetWindowPos(windowHandle, (vidmode.width() - width) / 2, (vidmode.height() - height) / 2);

    // Make the OpenGL context current
    glfwMakeContextCurrent(windowHandle);
    // Enable v-sync
    glfwSwapInterval(1);

    // Make the window visible
    glfwShowWindow(windowHandle);

    GL.createCapabilities();

    // Set the clear color
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    glEnable(GL_DEPTH_TEST);
  }
예제 #7
0
  static long createGlfwWindow(Lwjgl3ApplicationConfiguration config, long sharedContextWindow) {
    GLFW.glfwDefaultWindowHints();
    GLFW.glfwWindowHint(GLFW.GLFW_VISIBLE, GLFW.GLFW_FALSE);
    GLFW.glfwWindowHint(
        GLFW.GLFW_RESIZABLE, config.windowResizable ? GLFW.GLFW_TRUE : GLFW.GLFW_FALSE);

    if (sharedContextWindow == 0) {
      GLFW.glfwWindowHint(GLFW.GLFW_RED_BITS, config.r);
      GLFW.glfwWindowHint(GLFW.GLFW_GREEN_BITS, config.g);
      GLFW.glfwWindowHint(GLFW.GLFW_BLUE_BITS, config.b);
      GLFW.glfwWindowHint(GLFW.GLFW_ALPHA_BITS, config.a);
      GLFW.glfwWindowHint(GLFW.GLFW_STENCIL_BITS, config.stencil);
      GLFW.glfwWindowHint(GLFW.GLFW_DEPTH_BITS, config.depth);
      GLFW.glfwWindowHint(GLFW.GLFW_SAMPLES, config.samples);
    }

    if (config.useGL30) {
      // GLFW.glfwWindowHint(GLFW.GLFW_CLIENT_API, GLFW.GLFW_OPENGL_API);
      GLFW.glfwWindowHint(GLFW.GLFW_CONTEXT_VERSION_MAJOR, config.gles30ContextMajorVersion);
      GLFW.glfwWindowHint(GLFW.GLFW_CONTEXT_VERSION_MINOR, config.gles30ContextMinorVersion);
      GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_FORWARD_COMPAT, GLFW.GLFW_TRUE);
      GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_PROFILE, GLFW.GLFW_OPENGL_CORE_PROFILE);
    }

    long windowHandle = 0;

    if (config.fullscreenMode != null) {
      // glfwWindowHint(GLFW.GLFW_REFRESH_RATE, config.fullscreenMode.refreshRate);
      windowHandle =
          GLFW.glfwCreateWindow(
              config.fullscreenMode.width,
              config.fullscreenMode.height,
              config.title,
              config.fullscreenMode.getMonitor(),
              sharedContextWindow);
    } else {
      GLFW.glfwWindowHint(
          GLFW.GLFW_DECORATED, config.windowDecorated ? GLFW.GLFW_TRUE : GLFW.GLFW_FALSE);
      windowHandle =
          GLFW.glfwCreateWindow(
              config.windowWidth, config.windowHeight, config.title, 0, sharedContextWindow);
    }
    if (windowHandle == 0) {
      throw new GdxRuntimeException("Couldn't create window");
    }
    if (config.fullscreenMode == null) {
      if (config.windowX == -1 && config.windowY == -1) {
        GLFWVidMode vidMode = GLFW.glfwGetVideoMode(GLFW.glfwGetPrimaryMonitor());
        GLFW.glfwSetWindowPos(
            windowHandle,
            vidMode.width() / 2 - config.windowWidth / 2,
            vidMode.height() / 2 - config.windowHeight / 2);
      } else {
        GLFW.glfwSetWindowPos(windowHandle, config.windowX, config.windowY);
      }
    }
    GLFW.glfwMakeContextCurrent(windowHandle);
    GLFW.glfwSwapInterval(config.vSyncEnabled ? 1 : 0);
    GL.createCapabilities();

    extractVersion();
    if (!isOpenGLOrHigher(2, 0))
      throw new GdxRuntimeException(
          "OpenGL 2.0 or higher with the FBO extension is required. OpenGL version: "
              + GL11.glGetString(GL11.GL_VERSION)
              + "\n"
              + glInfo());

    if (!supportsFBO()) {
      throw new GdxRuntimeException(
          "OpenGL 2.0 or higher with the FBO extension is required. OpenGL version: "
              + GL11.glGetString(GL11.GL_VERSION)
              + ", FBO extension: false\n"
              + glInfo());
    }

    for (int i = 0; i < 2; i++) {
      GL11.glClearColor(
          config.initialBackgroundColor.r,
          config.initialBackgroundColor.g,
          config.initialBackgroundColor.b,
          config.initialBackgroundColor.a);
      GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
      GLFW.glfwSwapBuffers(windowHandle);
    }
    return windowHandle;
  }
예제 #8
0
  public void initialize(
      float fieldOfView, int w, int h, float zn, float zf, boolean resizable, long share) {
    if (init) {
      return;
    }
    FOV = fieldOfView;
    zNear = zn;
    zFar = zf;
    width = w;
    height = h;

    Platform.setDefaultGLFWWindowConfigurations();
    GLFW.glfwWindowHint(GLFW.GLFW_RESIZABLE, resizable ? GLFW.GLFW_TRUE : GLFW.GLFW_FALSE);

    window =
        GLFW.glfwCreateWindow(
            w,
            h,
            title,
            MemoryUtil.NULL,
            share == Registry.INVALID ? Nemgine.getOpenGLContext() : share);
    if (window == MemoryUtil.NULL) {
      new WindowException(Registry.WINDOW_EXCEPTION_FAILED_TO_CREATE).printStackTrace();
      return;
    }
    GLFWVidMode mode = GLFW.glfwGetVideoMode(GLFW.glfwGetPrimaryMonitor());
    GLFW.glfwSetWindowPos(window, (mode.width() - w) / 2, (mode.height() - h) / 2);

    sizeCallback =
        new GLFWWindowSizeCallback() {
          @Override
          public void invoke(long window, int wi, int he) {
            width = wi;
            height = he;
            resized = true;
          }
        };
    keyCallback =
        new GLFWKeyCallback() {
          @Override
          public void invoke(long window, int key, int scancode, int action, int mods) {
            if (input != null) {
              input.keyEvent(key, scancode, action, mods);
            }
          }
        };
    charCallback =
        new GLFWCharCallback() {
          @Override
          public void invoke(long window, int codepoint) {
            if (input != null) {
              input.charEvent((char) codepoint);
            }
          }
        };
    charModsCallback =
        new GLFWCharModsCallback() {
          @Override
          public void invoke(long window, int codepoint, int mods) {
            if (input != null) {
              input.charModsEvent((char) codepoint, mods);
            }
          }
        };

    GLFW.glfwSetWindowSizeCallback(window, sizeCallback);
    GLFW.glfwSetKeyCallback(window, keyCallback);
    GLFW.glfwSetCharCallback(window, charCallback);
    GLFW.glfwSetCharModsCallback(window, charModsCallback);
    GLFW.glfwMakeContextCurrent(window);
    GL.createCapabilities(Registry.OPENGL_FORWARD_COMPATIBLE);
    GLFW.glfwShowWindow(window);
    IntBuffer b1 = BufferUtils.createIntBuffer(1);
    IntBuffer b2 = BufferUtils.createIntBuffer(1);
    GLFW.glfwGetFramebufferSize(window, b1, b2);
    GL11.glViewport(0, 0, b1.get(), b2.get());
    GL11.glEnable(GL11.GL_DEPTH_TEST);
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    resize();
    init = true;
  }