Difference between revisions of "Jogl Tutorial"

From JogampWiki
Jump to: navigation, search
 
(14 intermediate revisions by 2 users not shown)
Line 9: Line 9:
 
** [{{SERVER}}/deployment/jogamp-current/jogl-demos/applet-gears.html using the Applet Tag]
 
** [{{SERVER}}/deployment/jogamp-current/jogl-demos/applet-gears.html using the Applet Tag]
 
* [{{SERVER}}/jogl/doc/NEWT-Overview.html NEWT - High Performance Native Windowing Toolkit]
 
* [{{SERVER}}/jogl/doc/NEWT-Overview.html NEWT - High Performance Native Windowing Toolkit]
* [{{SERVER}}/git/?p=jogl-demos.git;a=blob;f=src/demos/es2/RawGL2ES2demo.java;hb=HEAD OpenGL GL2ES2 GLSL Standalone Example by Xerxes Rånby ]
+
* [{{SERVER}}/git/?p=jogl-demos.git;a=blob;f=src/demos/es2/RawGL2ES2demo.java;hb=HEAD OpenGL GL2ES2 GLSL Standalone Example by Xerxes Rånby]
 
* [https://gist.github.com/gouessej/3420e2b6f632efdddf98 Rudimentary standalone example using the fixed pipeline by Julien Gouesse]
 
* [https://gist.github.com/gouessej/3420e2b6f632efdddf98 Rudimentary standalone example using the fixed pipeline by Julien Gouesse]
 +
* [https://gist.github.com/xranby/ccbcfcaef341f5bd1ba8 Rudimentary standalone example using the fixed pipeline with OpenGL ES 1 by Xerxes Rånby]
  
 
= JogAmp's Wiki =
 
= JogAmp's Wiki =
Line 28: Line 29:
 
* [[Jogl_FAQ|FAQ]]
 
* [[Jogl_FAQ|FAQ]]
  
= JOGL Hello Triangle =
+
= Hello Triangle and Texture =
[https://github.com/elect86/jogl-samples/blob/master/jogl-samples/src/helloTriangle/HelloTriangle.java Simple sample] that features pure newt, animator, indexed drawing, dinamic attribute and frag data binding, vao, vbo (with normalization on one attribute), ibo (with shorts), glsl program and matrix jogl util, key listener and right way to dispose
+
[https://github.com/elect86/helloTriangle Simple sample] that features GL4, pure newt, glWindow options, animator, indexed drawing, dinamic attribute and frag data binding, interleaved data, vao, vbo (with normalization on one attribute), ibo (with shorts), uniform, glsl program (with specific suffix) and matrix jogl util, gl error check, key listener and right way to dispose.
 +
 
 +
There is also a gl3 version and a Texture sample.
 +
 
 +
All the samples are written in Java and [https://en.wikipedia.org/wiki/Kotlin_(programming_language) Kotlin].
 +
 
 +
= Common Mistakes =
 +
I suggest you to take a read to these two pages for a quick overview over the most common problems, it is a very useful reading, legacy sections are carefully signaled.
 +
 
 +
[https://www.opengl.org/wiki/Common_Mistakes OpenGL]
 +
[https://www.opengl.org/wiki/GLSL_:_common_mistakes GLSL]
 +
 
 +
Another common mistake that may happen if you port code from C/C++ to Java is this one:
 +
 
 +
<code>
 +
Caused by: com.jogamp.opengl.GLException: unpack pixel_buffer_object must be bound to call this method
 +
at jogamp.opengl.gl4.GL4bcImpl.checkBufferObject(GL4bcImpl.java:40621)
 +
at jogamp.opengl.gl4.GL4bcImpl.checkUnpackPBOBound(GL4bcImpl.java:40707)
 +
at jogamp.opengl.gl4.GL4bcImpl.glTexImage2D(GL4bcImpl.java:5535)
 +
at tests.gl320.Gl_320_fbo_blit.initTexture(Gl_320_fbo_blit.java:199)
 +
</code>
 +
 
 +
This happens because in C/C++, when you just want to allocate the space for a texture using, for example, ''glTexImage2D'', you should not pass 0 as the last argument, but ''null''.
 +
 
 +
 
 +
N.B: The use of color picking is '''NOT''' recommended on any hardware whose palette is partially emulated.
 +
 
 +
= Java OpenGL Samples Pack =
 +
 
 +
The [https://github.com/elect86/jogl-samples Java OpenGL Samples Pack] (called unsurprisingly jogl-samples) is a port of the [http://www.g-truc.net/project-0026.html OpenGL Samples Pack], a collection of OpenGL samples based on the OpenGL "core profile" specifications.
 +
 
 +
The project aims to promote the new OpenGL features making easier version transitions for OpenGL programmers with a complementary documentation for the OpenGL specification. Despite the fact that the OpenGL Samples Pack provides as simple (and dumb) as possible samples, it's not a tutorial for beginner but a project for programmers already familiar with OpenGL. The OpenGL Samples Pack is also a good OpenGL drivers feature test.
 +
 
 +
These samples illustrate mostly of the OpenGL features from ES 2.0 up to the last GL extenstions, same of them usually also called AZDO (Almost Zero Driver Overhead).
  
 
= Wade's JOGL tutorials =
 
= Wade's JOGL tutorials =
Line 44: Line 78:
 
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-2 JOGL Tutorial 2 - Creating a Window]
 
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-2 JOGL Tutorial 2 - Creating a Window]
 
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-3 JOGL Tutorial 3 - Creating a Render Loop]
 
* [https://sites.google.com/site/justinscsstuff/jogl-tutorial-3 JOGL Tutorial 3 - Creating a Render Loop]
 +
 +
= [http://ecs.csus.edu/~gordonvs/textbook.html Gordon] and Clevenger textbook =
 +
 +
Shader-based modern OpenGL 3D graphics programming textbook entirely in JOGL. Also works as a JOGL primer. "Computer Graphics Programming in OpenGL with Java" by V. Scott Gordon and John L. Clevenger, published by [http://www.merclearning.com/titles/Computer_Graphics_Programming.html Mercury], available at [https://www.amazon.com/Computer-Graphics-Programming-OpenGL-Java/dp/1683920279/ Amazon].
  
 
= Elect86's modern OpenGL examples =
 
= Elect86's modern OpenGL examples =

Latest revision as of 16:24, 25 July 2017

JogAmp's Static

JogAmp's Wiki

Hello Triangle and Texture

Simple sample that features GL4, pure newt, glWindow options, animator, indexed drawing, dinamic attribute and frag data binding, interleaved data, vao, vbo (with normalization on one attribute), ibo (with shorts), uniform, glsl program (with specific suffix) and matrix jogl util, gl error check, key listener and right way to dispose.

There is also a gl3 version and a Texture sample.

All the samples are written in Java and Kotlin.

Common Mistakes

I suggest you to take a read to these two pages for a quick overview over the most common problems, it is a very useful reading, legacy sections are carefully signaled.

OpenGL GLSL

Another common mistake that may happen if you port code from C/C++ to Java is this one:

Caused by: com.jogamp.opengl.GLException: unpack pixel_buffer_object must be bound to call this method at jogamp.opengl.gl4.GL4bcImpl.checkBufferObject(GL4bcImpl.java:40621) at jogamp.opengl.gl4.GL4bcImpl.checkUnpackPBOBound(GL4bcImpl.java:40707) at jogamp.opengl.gl4.GL4bcImpl.glTexImage2D(GL4bcImpl.java:5535) at tests.gl320.Gl_320_fbo_blit.initTexture(Gl_320_fbo_blit.java:199)

This happens because in C/C++, when you just want to allocate the space for a texture using, for example, glTexImage2D, you should not pass 0 as the last argument, but null.


N.B: The use of color picking is NOT recommended on any hardware whose palette is partially emulated.

Java OpenGL Samples Pack

The Java OpenGL Samples Pack (called unsurprisingly jogl-samples) is a port of the OpenGL Samples Pack, a collection of OpenGL samples based on the OpenGL "core profile" specifications.

The project aims to promote the new OpenGL features making easier version transitions for OpenGL programmers with a complementary documentation for the OpenGL specification. Despite the fact that the OpenGL Samples Pack provides as simple (and dumb) as possible samples, it's not a tutorial for beginner but a project for programmers already familiar with OpenGL. The OpenGL Samples Pack is also a good OpenGL drivers feature test.

These samples illustrate mostly of the OpenGL features from ES 2.0 up to the last GL extenstions, same of them usually also called AZDO (Almost Zero Driver Overhead).

Wade's JOGL tutorials

Rami's JOGL tutorials

Justin's Getting Started with JOGL 2 Tutorials

Gordon and Clevenger textbook

Shader-based modern OpenGL 3D graphics programming textbook entirely in JOGL. Also works as a JOGL primer. "Computer Graphics Programming in OpenGL with Java" by V. Scott Gordon and John L. Clevenger, published by Mercury, available at Amazon.

Elect86's modern OpenGL examples

Nils Hoffmann's Netbeans Platform examples

Courses

LeoLoL.com Tutorials (Currently unreachable)

JOGL 1 tutorials

Ste3e's JOGL tutorials

(The old (not quite up-to-date) JOGL Userguide is currently available here)