Skip to content

integeruser/jgltut

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Learning Modern 3D Graphics Programming with LWJGL 3 and JOML

This project is a port of Learning Modern 3D Graphics Programming tutorials to Java using LWJGL and JOML. The original project, named gltut, can be found here. Since it is needed by the tutorials, this repository also includes a partial port of the Unofficial OpenGL SDK, named glsdk, which contains a DDS texture loader and other useful stuff.

To suggest a feature, report bugs or general discussion use the issue tracker. Contributions are welcome!

Usage

To compile and run the code, you will need:

Working with different versions of LJWGL 3 or JOML may require adjustments to the code. If you are stuck with LWJGL 2, check the release v0.9.1 of this repository.

Create a new Java project using your favorite IDE, then:

  1. Import the source code of this repository;
  2. Download LWJGL from the link above, then add lwjgl.jar and the other JARs to the classpath and link the native libraries, as explained in the official guide;
  3. Download joml-1.9.0.jar from the link above, then add it to the classpath as in the previous step.

Finally, run the main method of the first tutorial integeruser.jgltut.tut01.Tut1.java and check the output in the console window. If your graphics card does not meet the minimum requirements (checked using the LWJGL helper GL.getCapabilities().OpenGL33), the message You must have at least OpenGL 3.3 to run this tutorial. will appear; otherwise, if no other errors show up, you can start playing with the other tutorials by running the main method of integeruser.jgltut.TutorialChooser.java. To quit any tutorial simply press ESC.

Note for OS X users: to run SWT applications on OS X it is necessary to use the JVM option XstartOnFirstThread. Because of this, TutorialChooser.java can not work correctly on OS X.

Notes

I decided to keep the ported code as similar as possible to the original C++ code, and therefore variables and functions are almost identical to their counterpart in the original projects. The only notable difference is the introduction of the commons package to collect some classes used in several parts of the project. I also decided to keep the same directory layout:

jglsdk/
|-- glimg/
|-- glutil/

jgltut/
|-- commons/
|-- data/
|-- framework/
|-- tut01/
|------ Tut1.java
|-- tut02/
|------ data/
|------ FragPosition.java
|------ VertexColor.java
|-- ...
|-- ...
|-- ...
|-- tut17/
|------ data/
|------ CubePointLight.java
|------ DoubleProjection.java
|------ ProjectedLight.java
|-- Tutorial.java
|-- TutorialChooser.java

Credits

The LWJGL license can be found here.

The JOML license can be found here.

Licenses of the projects gltut and glsdk can be found here and here. Extract from the gltut license:

The following files are copywritten and distributed under the Creative Commons Attribution 3.0 Unported (CC BY 3.0) license, as described in the "./CC BY 3.0 legalcode.txt" file. Attribution for these works is presented here:

Attributed to Etory, of OpenGameArt.org:

  • data/seamless_rock1_small.dds

Attributed to p0ss, of OpenGameArt.org:

  • data/concrete649_small.dds
  • data/dsc_1621_small.dds
  • data/rough645_small.dds

About

Learning Modern 3D Graphics Programming with LWJGL 3 and JOML

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •