GLFW in a Nutshell
  • About GLFW
  • Preparation
    • Project Setup
    • Library Setup
  • Windows
    • Window Basics
    • Properties
    • Actions
    • Creation Hints
    • Attributes
    • (Windowed) Fullscreen
    • Callbacks
    • Icons
  • Contexts
    • Context Basics
    • OpenGL (ES)
    • Vulkan
  • Input
    • Keyboard
    • Mouse
    • Joystick/Gamepad
    • Other
  • Monitors
    • Monitor Basics
    • Video Modes
    • Multiple Monitors
  • Appendix
    • Credits
    • Licensing
    • Glossary
Powered by GitBook
On this page
  • Java
  • Maven
  • Gradle
  • IntelliJ IDEA / Eclipse

Was this helpful?

  1. Preparation

Project Setup

Getting a project set up to start development

PreviousAbout GLFWNextLibrary Setup

Last updated 5 years ago

Was this helpful?

Java

Wrappers available for Java:

Wrapper

Author

GitHub

Source

Documentation

jGLFW

badlogic

-

LWJGL-GLFW

LWJGL

In this guide, LWJGL-GLFW will be used. There are no plans to add a how-to for jGLFW. LWJGL-GLFW requires the LWJGL core, and since will be used in this guide, we will also add LWJGL-STB.

Maven

This assumes, you have already created a Maven project and have some familiarity with Maven's pom.xml file.

Depending on your operating system, add the following to your pom.xml:

    <properties>
      <lwjgl.version>3.2.3</lwjgl.version>
      <lwjgl.natives>natives-windows-x86</lwjgl.natives>
   </properties>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.lwjgl</groupId>
            <artifactId>lwjgl-bom</artifactId>
            <version>${lwjgl.version}</version>
            <scope>import</scope>
            <type>pom</type>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <dependencies>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl</artifactId>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl-glfw</artifactId>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl-stb</artifactId>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl</artifactId>
         <classifier>${lwjgl.natives}</classifier>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl-glfw</artifactId>
         <classifier>${lwjgl.natives}</classifier>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl-stb</artifactId>
         <classifier>${lwjgl.natives}</classifier>
      </dependency>
   </dependencies>
    <properties>
      <lwjgl.version>3.2.3</lwjgl.version>
      <lwjgl.natives>natives-linux</lwjgl.natives>
   </properties>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.lwjgl</groupId>
            <artifactId>lwjgl-bom</artifactId>
            <version>${lwjgl.version}</version>
            <scope>import</scope>
            <type>pom</type>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <dependencies>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl</artifactId>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl-glfw</artifactId>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl-stb</artifactId>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl</artifactId>
         <classifier>${lwjgl.natives}</classifier>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl-glfw</artifactId>
         <classifier>${lwjgl.natives}</classifier>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl-stb</artifactId>
         <classifier>${lwjgl.natives}</classifier>
      </dependency>
   </dependencies>
    <properties>
      <lwjgl.version>3.2.3</lwjgl.version>
      <lwjgl.natives>natives-macos</lwjgl.natives>
   </properties>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.lwjgl</groupId>
            <artifactId>lwjgl-bom</artifactId>
            <version>${lwjgl.version}</version>
            <scope>import</scope>
            <type>pom</type>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <dependencies>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl</artifactId>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl-glfw</artifactId>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl-stb</artifactId>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl</artifactId>
         <classifier>${lwjgl.natives}</classifier>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl-glfw</artifactId>
         <classifier>${lwjgl.natives}</classifier>
      </dependency>
      <dependency>
         <groupId>org.lwjgl</groupId>
         <artifactId>lwjgl-stb</artifactId>
         <classifier>${lwjgl.natives}</classifier>
      </dependency>
   </dependencies>

Gradle

This assumes, you have already created a Gradle project and have some familiarity with Gradle's build.gralde file.

Depending on your operating system, add the following to your build.gradle:

    project.ext.lwjglVersion = "3.2.3"
    project.ext.lwjglNatives = "natives-windows-x86"

    repositories {
       mavenCentral()
    }

    dependencies {
       implementation platform("org.lwjgl:lwjgl-bom:$lwjglVersion")

       implementation "org.lwjgl:lwjgl"
       implementation "org.lwjgl:lwjgl-glfw"
       implementation "org.lwjgl:lwjgl-stb"
       runtimeOnly "org.lwjgl:lwjgl::$lwjglNatives"
       runtimeOnly "org.lwjgl:lwjgl-glfw::$lwjglNatives"
       runtimeOnly "org.lwjgl:lwjgl-stb::$lwjglNatives"
    }
    project.ext.lwjglVersion = "3.2.3"
    project.ext.lwjglNatives = "natives-linux"

    repositories {
       mavenCentral()
    }

    dependencies {
       implementation platform("org.lwjgl:lwjgl-bom:$lwjglVersion")

       implementation "org.lwjgl:lwjgl"
       implementation "org.lwjgl:lwjgl-glfw"
       implementation "org.lwjgl:lwjgl-stb"
       runtimeOnly "org.lwjgl:lwjgl::$lwjglNatives"
       runtimeOnly "org.lwjgl:lwjgl-glfw::$lwjglNatives"
       runtimeOnly "org.lwjgl:lwjgl-stb::$lwjglNatives"
    }
    project.ext.lwjglVersion = "3.2.3"
    project.ext.lwjglNatives = "natives-macos"

    repositories {
       mavenCentral()
    }

    dependencies {
       implementation platform("org.lwjgl:lwjgl-bom:$lwjglVersion")

       implementation "org.lwjgl:lwjgl"
       implementation "org.lwjgl:lwjgl-glfw"
       implementation "org.lwjgl:lwjgl-stb"
       runtimeOnly "org.lwjgl:lwjgl::$lwjglNatives"
       runtimeOnly "org.lwjgl:lwjgl-glfw::$lwjglNatives"
       runtimeOnly "org.lwjgl:lwjgl-stb::$lwjglNatives"
    }

IntelliJ IDEA / Eclipse

This assumes, you have already created an IntelliJ IDEA or Eclipse project and are somewhat familiar with your IDE of choice.

  1. Adjust the following settings:

    • Options: Include source, Include JavaDoc

    • Natives: choose depending on your needs

    • Presets: None (to deselect everything)

    • Contents: LWJGL core, GLFW, stb

  2. Hit DOWNLOAD ZIP and extract the downloaded archive into a folder in your project root (e.g. lib).

TODO

If you require a more complex dependency setup, for example supporting multiple operating systems, head to and easily build a pom.xml specific to your needs.

If you require a more complex dependency setup, for example supporting multiple operating systems, head to and easily build a gradle.properties specific to your needs.

Open and select Release.

{:start="4"} 4. Open Project Structure by pressing in the top right corner, or CTRL+ALT+SHIFT+S / ⌘Cmd+;. 5. Select the tab Libraries on the left, click on and select Java: 6. Specify your libraries location (selecting the top-level folder is enough), and select the modules to add your libraries to: Note: When selecting a folder as library file, IntelliJ classifies jars containing JavaDoc and natives under Classes. This is purely visual - JavaDocs and natives are correctly added. 7. Save your Project Settings by clicking Okay.

STB
lwjgl.org
lwjgl.org
lwjgl.org
github.com
gitbub.com
github.com
github.com
lwjgl.org
Choose Modules
Add Library
Project Structure > Libraries
Project Structure
Select Library Files