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
Project Structure
Choose Modules
Add Library
Project Structure > Libraries
Select Library Files