Jump to content
  • Advertisement
Sign in to follow this  
Godmil

OpenGL Which version of OpenGL is recommended for beginners?

This topic is 2062 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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.

Share this post


Link to post
Share on other sites
Advertisement

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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".)

Share this post


Link to post
Share on other sites


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...

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 :/

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!