Jump to content

  • Log In with Google      Sign In   
  • Create Account


Which version of OpenGL is recommended for beginners?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
11 replies to this topic

#1 Godmil   Members   -  Reputation: 744

Like
2Likes
Like

Posted 19 February 2014 - 08:31 AM

I've recently decided I should dabble in OpenGL a little, just for fun, and to learn new things, however I'm unsure which version to learn.

I normally always start by learning the latest version, however I'd heard that modern OpenGL uses a level of abstraction that makes it difficult to understand what's going on, and that it's easier to learn if you start with an old version.

Also I'm interested in doing some small games on smaller devices (Pandora, RaspberryPi and iOS), which I believe support OpenGL ES 2.0, which think I read is closer to older OpenGL versions.

If anyone has any suggestions I'd be very appreciative.



Sponsor:

#2 samoth   Crossbones+   -  Reputation: 4629

Like
4Likes
Like

Posted 19 February 2014 - 09:40 AM

It may seem like starting with OpenGL 1.x (or 2.x if you will, which is pretty much the same) would be the correct thing to do, since immediate mode is so nice and easy, and you need not worry about setting up buffers, shaders, etc. and there are so many nice and easy tuturials around.

 

However, I strongly recommend to start with OpenGL 3.x (3.3 if you target anything but Mac). The reason is that sooner or later, you will have to "unlearn" everything that you learned wrong otherwise. The classic, fixed function pipeline does not map well (or, at all) to hardware, so it offers a quite inferior performance. If you plan on getting serious one day, you will have to learn proper, modern OpenGL.

There is not that much of a difference between version 3 and version 4 (other than a few more features, such as tesselation and compute shaders, and better minimum specs), but there are worlds between versions 1/2 and version 3. They're totally different things, even if some functions still have the same name. It's best to learn the correct way from the beginning.

 

OpenGL ES is a somewhat different beast, but OpenGL ES 2.0 is in my opinion "sufficiently close" to modern OpenGL (buffers, shaders) so you will still rather want to learn modern OpenGL right away instead of starting with "museum" versions.



#3 HScottH   Members   -  Reputation: 494

Like
2Likes
Like

Posted 19 February 2014 - 11:29 AM

I encourage you to choose OpenGL 3 (or 3.x).

 

Why?

 

* 1.x (immediate mode) is old, slow, and losing support; learning it will be like learning to type through first learning to write cursive

* 3.x was released in 2008 and is supported by most hardware from that time and later

* 3.x has features that are important from a capability and performance perspective, over 2.x

* ES 3.0, now out on iOS, Android and others, is gaining ground, and is very similar to OpenGL 3.0

 

There are some real advantages in OpenGL 4, but for any but an academic project, one aught not depend upon them because support is still fairly narrow in the market.



#4 Chris_F   Members   -  Reputation: 2180

Like
2Likes
Like

Posted 19 February 2014 - 11:42 AM

Don't learn/use OpenGL 1.x or fixed function. It won't teach you anything about modern graphics and the newer APIs aren't actually any harder to learn. Learn with whatever version of the API you think you are actually going to be using. I would recommend OpenGL 3.3 at least. OpenGL ES 3.0 is catching on and WebGL 2.0 probably will soon as well, so there is no reason to waste much time on older versions.



#5 CDProp   Members   -  Reputation: 915

Like
0Likes
Like

Posted 19 February 2014 - 12:17 PM

I slightly disagree that the newer API's aren't harder to learn. I agree that it's a 1000% better system; it's just that you have so much to set up before you can even draw a triangle. Once you get your window and context all set up, you have to store your vertices somewhere (VBO, usually), you have to write a little shader program to display them, you have to specify which data in the VBO corresponds to which attributes in the shader (Vertex Specification), and then you have to provide other shader inputs, such as a ModelViewProjection matrix uniform, all before you actually draw the thing. It's not insurmountable, but it's a great deal more work, and therefore more topics to learn, than what is involved in setting up your ModelView matrix and calling glBegin/glVertex/glEnd.

 

But I agree with everyone here that the relative ease of the immediate mode and fixed function stuff should not tempt you to use it, because it's a dead end, and you'll have to undo everything and start over once you inevitably decide that the fixed function pipeline is too limiting.



#6 aregee   Members   -  Reputation: 864

Like
0Likes
Like

Posted 19 February 2014 - 12:31 PM

However, I strongly recommend to start with OpenGL 3.x (3.3 if you target anything but Mac). The reason is that sooner or later, you will have to "unlearn" everything that you learned wrong otherwise.

 

 

OpenGL 3.2, 3.3 and 4.1 functionality is available on OS X, if you use core functionality.  If you want legacy, you are left with 2.1.  As samoth says, I would go for modern OpenGL, which is OpenGL 3.2 + Core.  (Core removes backwards compatibility, forcing you to go "modern".)



#7 cgrant   Members   -  Reputation: 568

Like
0Likes
Like

Posted 19 February 2014 - 12:44 PM


however I'd heard that modern OpenGL uses a level of abstraction that makes it difficult to understand what's going on, and that it's easier to learn if you start with an old version.


Where did you hear that from? Aside from giving you direct hw access, OpenGL is thin enough to suit your purpose. I wholeheartly agree with all the above post in regards to which GL version to start learning from. Also just my $.02, something being difficult to learn should not be deterrent to learning it, especially if you conclusion is based on external influences and not from direct experience....embrace a challenge...

#8 Godmil   Members   -  Reputation: 744

Like
1Likes
Like

Posted 19 February 2014 - 02:40 PM

Ok, sounds like 3.3 is the way to go. Thanks guys :)



#9 SunDog   Members   -  Reputation: 232

Like
1Likes
Like

Posted 19 February 2014 - 11:59 PM

I've been workign through these tutorials fro OpenGL 4.0

 

http://rastertek.com/tutgl40.html

 

This doesn't use any external libraries like GLEW or GLUT - he manually imports the extensions for each function you are going to use.  He also whipped up some quick matrix operations and shaders, and generates the OpenGL context manually.   So its totally self contained and doesn't require any external libraries, just VS 2012. If you really want to understand whats going on, this might be a good place to start.  

 

I figure by the time I learn it well enough, OpenGL 4.0 will be common enough anyway smile.png



#10 Godmil   Members   -  Reputation: 744

Like
0Likes
Like

Posted 20 February 2014 - 11:51 AM

Thanks SunDog, that sounds really good.

You guys weren't kidding when you said getting a simple triangle takes a lot of work. I spend 2 hours downloading/compiling the dlls setting up my IDE and copying a 'simple' glObject class, then it crashed on startup with no errors :/



#11 SunDog   Members   -  Reputation: 232

Like
0Likes
Like

Posted 20 February 2014 - 06:29 PM

Thanks SunDog, that sounds really good.

You guys weren't kidding when you said getting a simple triangle takes a lot of work. I spend 2 hours downloading/compiling the dlls setting up my IDE and copying a 'simple' glObject class, then it crashed on startup with no errors :/

 

With the above tutorials you shouldn't need to download any DLLs... at least with Windows 8, I didn't have to even modify any of the project properties in VS2012



#12 TheChubu   Crossbones+   -  Reputation: 3951

Like
1Likes
Like

Posted 20 February 2014 - 10:10 PM

Thanks SunDog, that sounds really good.

You guys weren't kidding when you said getting a simple triangle takes a lot of work. I spend 2 hours downloading/compiling the dlls setting up my IDE and copying a 'simple' glObject class, then it crashed on startup with no errors :/

Just keep working on it. Usually its the first triangle the hardest, the other 500 thousand are way more easier to render :D


"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS