Which version(s) of OpenGL does JOGL use and how does it work exactly? (Profiles)

classic Classic list List threaded Threaded
8 messages Options
s3a
Reply | Threaded
Open this post in threaded view
|

Which version(s) of OpenGL does JOGL use and how does it work exactly? (Profiles)

s3a
This post was updated on .
I am just going to say some things first to "paint a picture" of what I know. The documentation seems to want people to learn JOGL 2.0 but I use Debian and it has JOGL 1.1.1 and I prefer using extremely stable stuff. The Linux OpenGL implementation, mesa, supports up to OpenGL 2.1 so this means that that is the highest I can use with open source drivers whereas proprietary drivers typically offer the highest level of OpenGL supported.

I read about something called Profiles which, if I'm correct, allows JOGL (2.x) to select which OpenGL version to use. How does this work exactly (without getting too technical)? Does it allow the programmer to use, for example, OpenGL 2.0 syntax even when there is OpenGL [insert a large number here]? I am choosing to learn JOGL 1.1.1 until JOGL 2.x becomes (extremely) stable but I wanted to know. Sorry for saying dumb things; all I know about JOGL/OpenGL is how to make a coloured static square display itself and do nothing fancy (so far). Also, correct me if anything I said here was wrong.

Basically, I am just concerned about backward compatibility (and cross-platform usability). I like when languages add new features but I don't like when the old syntax stops working (but if that's the way things are, I'll make the best of it). For example, in plain Java; the older Java code (almost) always works perfectly fine without any refactoring whereas old JOGL code doesn't follow that rule. Was that an exception because JOGL was very "young and immature" or is this always how it's going to be? Like should I refrain from learning OpenGL above versions 2.1 until JOGL 2.x comes out? The key for me is to be able to stick to JOGL 1.1.1 until JOGL 2.x is fully finalized. I am going to get serious about JOGL soon and I would like to know what I am getting into.

Any input would be greatly appreciated!
Thanks in advance!
Reply | Threaded
Open this post in threaded view
|

Re: Which version(s) of OpenGL does JOGL use and how does it work exactly? (Profiles)

gouessej
Administrator
I use Linux too and I don't need prepackaged JOGL versions... Installing JOGL without them is not difficult.

The profile allows to select an embedded target (smartphones, middle range mobile phones, tablets, etc...) or a desktop target (a computer). It allows to choose between a forward compatible context or not. Mickael Bien wrote something about it, ask Google.

JOGL's syntax have changed several times in its life but some programs using JOGL still work on OpenGL 1.1. JOGL 1.1.1 was already supporting OpenGL 2.1, you make a confusion between JOGL version and OpenGL version.

Using JOGL 1.1.1 now whereas you seem to have no huge historical codebase using it is a waste of time, rather use JOGL 2.0. Its release candidate 2 is almost stable enough to be used in production except NEWT.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Which version(s) of OpenGL does JOGL use and how does it work exactly? (Profiles)

Demoscene Passivist
Administrator
In reply to this post by s3a
Michael blogged about OpenGL profiles a while ago: http://michael-bien.com/mbien/entry/jogl_2_opengl_profiles_explained
Reply | Threaded
Open this post in threaded view
|

Re: Which version(s) of OpenGL does JOGL use and how does it work exactly? (Profiles)

Sven Gothel
Administrator
In reply to this post by s3a
On Monday, July 11, 2011 11:54:42 PM s3a [via jogamp] wrote:
>
> I am just going to say some things first to "paint a picture" of what I know.
> The documentation seems to want people to learn JOGL 2.0.

Well, it is the only maintained JOGL version available.

> but I use Debian
> and it has JOGL 1.1.1 and I prefer using extremely stable stuff.

I would consider our continous integrated (jenkins incl. junit) maintained
version much more stable and reliable then the previous version lacking such
quality aspects. We also track the bugs on our bugzilla.

> The Linux
> OpenGL implementation, mesa, supports up to OpenGL 2.0 so this means that
> that is the highest I can use with open source drivers whereas proprietary
> drivers typically offer the highest level of OpenGL supported.

Note: Mesa is close to be OpenGL 3.0 compatible - incl. open drivers for AMD and Intel.

>
> I read about something called Profiles which, if I'm correct, allows JOGL
> (2.x) to select which OpenGL version to use. How does this work exactly
> (without getting too technical)?

Check the UML I have created ..
  - http://jogamp.org/jogl/doc/bouml/html/

And our API overview is very verbose on all these matters I believe:
  - http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html#overview_description
      - OpenGL Profile Model

  - http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html#GLAPIInclusionCriteria

  - http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html#GLRuntimeVersion

> Does it allow the programmer to use, for
> example, OpenGL 2.0 syntax even when there is OpenGL [insert a large number
> here]?

You can pick a GL profile you design your application for, and why doing so,
you have a validation at compile time already. for example you choose
GL3 for core GL3 profile. If you want to have your application running on
mobile and desktop you may choose GL2ES2, which is the common denominator
of GL2 and ES2.

Of course .. your application may also query the current version and branch to
specific optimized code,
i.e. if(gl.isGL3()) { /* use fancy stuff */ } else { /* old school */ }.

> I am choosing to learn JOGL 1.1.1 until JOGL 2.x becomes (extremely)
> stable but I wanted to know.
'Extremly stable' .. is not a metric we support.
But if you use the latest version you will have this community to support you.
Sometimes it's simple to help, sometimes complicated bugs not easy to reproduce happens,
which take longer to fix - also depending on our priorities.

However, everybody is always welcome to join and branch our code (git scm)
and offer patched (git) to be merged back (after review and discussion).

> Sorry for saying dumb things, all I know about
> JOGL/OpenGL is how to make a coloured static square display itself and do
> nothing fancy (so far). Also, correct me if anything I said here was wrong.

It's a point of view.

>
> Basically, I am just concerned about backward compatibility. I like when
> languages add new features but I don't like when the old syntax stops
> working (but if that's the way things are, I'll make the best of it). For
> example, in plain Java; the older Java code (almost) always works perfectly
> fine without any refactoring whereas old JOGL code doesn't follow that rule.
> Was that an exception because JOGL was very "young and immature" or is this
> always how it's going to be?

Well, we change things, true.
Mostly because we identify 'bugs' in the architecture or naming.

In case of a new API package, i.e. our new graph package,
we have a disclaimer mentioning it's instable API.

Other than that .. no major changes, hard to grok are planned.

For some sort of backward compatibility, we will still offer the
old versions as binary packages at a distinct URL - assuming you use Webstart or Applets.

This allows us to make simple changes, w/o breaking your application/applet.

>
> Any input would be greatly appreciated!
> Thanks in advance!

You are welcome.

Cheers, Sven
Reply | Threaded
Open this post in threaded view
|

Re: Which version(s) of OpenGL does JOGL use and how does it work exactly? (Profiles)

Sven Gothel
Administrator
In reply to this post by s3a
On Tuesday, July 12, 2011 11:24:24 PM Sven Gothel wrote:
> On Monday, July 11, 2011 11:54:42 PM s3a [via jogamp] wrote:
> >
> > I am just going to say some things first to "paint a picture" of what I know.
> > The documentation seems to want people to learn JOGL 2.0.
>

Added documentation about OpenGL's Evolution and JOGL:
 
  http://jogamp.org/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html

(linked to main page)

~Sven
s3a
Reply | Threaded
Open this post in threaded view
|

Re: Which version(s) of OpenGL does JOGL use and how does it work exactly? (Profiles)

s3a
gouessej: I like prepackaged versions since I do not have to worry about their versioning and updates and in Debian there are security updates.

Demoscene Passivist: Thanks.

Sven Gothel: I still want to use JOGL 1.1.1 but I am now learning it in such a way that I will learn OpenGL 2.0 (and 2.1?) BUT only the features that are not deprecated. I'm really happy that you told me Mesa is reaching 3.0 compatibility because I was trying to find out. Thanks also for the bunch of links. The if(isGL3 ... ) stuff was also something I liked to see :). It seems to me I can only get the code through git which sucks for me because I'm not even in University yet and I am kind of going through a "Frankenstein education" since I'm learning this on my own just because I feel like it. I suppose I'm going to have to read on git. I should learn it anyway (and I will soon-ish) since I'm going into Software Engineering (that and I also want to learn it because I like computer stuff in general) but for the immediate present, are there any JOGL rc2 builds for Windows? I basically want to make sure that my JOGL 1.1.1 syntax is non-deprecated so that what I learn is also future-proof.

P.S.
I found a book and it seems that I can learn the most-frequently used git commands pretty quickly so I'll do it soon-ish like I said above.

P.P.S
I don't think I am yet savvy enough to do this with Java but when I learn more, I plan to basically compile future JOGL versions to a deb file (for my Debian testing installation) such that it benefits from Debian's package management system as well.

P.P.P.S
Sorry for talking a lot lol. I just wanted to say I appreciate everyone's comments. :)
Reply | Threaded
Open this post in threaded view
|

Re: Which version(s) of OpenGL does JOGL use and how does it work exactly? (Profiles)

Sven Gothel
Administrator
On Thursday, July 14, 2011 04:16:38 AM s3a [via jogamp] wrote:

>
> gouessej: I like prepackaged versions since I do not have to worry about
> their versioning and updates and in Debian there are security updates.
>
> Demoscene Passivist: Thanks.
>
> Sven Gothel: I still want to use JOGL 1.1.1 but I am now learning it in such
> a way that I will learn OpenGL 2.0 (and 2.1?) BUT only the features that are
> not deprecated. I'm really happy that you told me Mesa is reaching 3.0
> compatibility because I was trying to find out. Thanks also for the bunch of
> links. The if(isGL3 ... ) stuff was also something I liked to see :). It
> seems to me I can only get the code through git which sucks for me because
> I'm not even in University yet and I am kind of going through a
> "Frankenstein education" since I'm learning this on my own just because I
> feel like it. I suppose I'm going to have to read on git. I should learn it
> anyway (and I will soon-ish) since I'm going into Software Engineering (that
> and I also want to learn it because I like computer stuff in general) but
> for the immediate present, are there any JOGL rc2 builds for Windows?

On the jogamp.org web page, there is a ling to RC2 buils, i.e. ZIP:
    http://jogamp.org/deployment/webstart/archive/

You would need gluegen and jogl, maybe the demos ..
  http://jogamp.org/deployment/webstart/archive/gluegen-2.0-b20-20110302-windows-amd64.7z
  http://jogamp.org/deployment/webstart/archive/jogl-2.0-b23-20110303-windows-amd64.7z
  etc

(source code is avail there as well, etc)

http://jogamp.org/wiki/index.php/Jogamp_Versioning_and_Releases


> I
> basically want to make sure that my JOGL 1.1.1 syntax is non-deprecated so
> that what I learn is also future-proof.
Use JOGL2.* ..

>
> P.S.
> I found a book and it seems that I can learn the most-frequently used git
> commands pretty quickly so I'll do it soon-ish like I said above.

Sure, would be best IMHO, especially if you intend to contribute or/and want to use
our latest stuff.

http://jogamp.org/jogl/doc/HowToBuild.html

~Sven
Reply | Threaded
Open this post in threaded view
|

Re: Which version(s) of OpenGL does JOGL use and how does it work exactly? (Profiles)

Sven Gothel
Administrator
In reply to this post by s3a
On Thursday, July 14, 2011 11:27:16 AM Sven Gothel wrote:

> On Thursday, July 14, 2011 04:16:38 AM s3a [via jogamp] wrote:
> >
> > gouessej: I like prepackaged versions since I do not have to worry about
> > their versioning and updates and in Debian there are security updates.
> >
> > Demoscene Passivist: Thanks.
> >
> > Sven Gothel: I still want to use JOGL 1.1.1 but I am now learning it in such
> > a way that I will learn OpenGL 2.0 (and 2.1?) BUT only the features that are
> > not deprecated. I'm really happy that you told me Mesa is reaching 3.0
> > compatibility because I was trying to find out. Thanks also for the bunch of
> > links. The if(isGL3 ... ) stuff was also something I liked to see :). It
> > seems to me I can only get the code through git which sucks for me because
> > I'm not even in University yet and I am kind of going through a
> > "Frankenstein education" since I'm learning this on my own just because I
> > feel like it. I suppose I'm going to have to read on git. I should learn it
> > anyway (and I will soon-ish) since I'm going into Software Engineering (that
> > and I also want to learn it because I like computer stuff in general) but
> > for the immediate present, are there any JOGL rc2 builds for Windows?
>
> On the jogamp.org web page, there is a ling to RC2 buils, i.e. ZIP:
>     http://jogamp.org/deployment/webstart/archive/
>
> You would need gluegen and jogl, maybe the demos ..
>   http://jogamp.org/deployment/webstart/archive/gluegen-2.0-b20-20110302-windows-amd64.7z
>   http://jogamp.org/deployment/webstart/archive/jogl-2.0-b23-20110303-windows-amd64.7z
>   etc
>
> (source code is avail there as well, etc)
>
> http://jogamp.org/wiki/index.php/Jogamp_Versioning_and_Releases
>

just aggregated latest autobuilds (today):
  http://jogamp.org/deployment/archive/master/gluegen_372-joal_176-jogl_408-jocl_370/archive/

have fun ..

~Sven