OpenGL learning methodology

Started by
5 comments, last by Martin Radev 9 years, 8 months ago

Hello,

I started recently to learn OpenGL. However, I find it a bit confusing at the beginning to start learning it in right way due to many tutorials being deprecated and new ones not being as good as they could actually be.

I will explain the path I have chosen so far and I hope I get some feedback.

Here is how I started.

-

. I started with these tutorials. I believe they could be quite deprecated, but it seems they are quite fine explained for beginners.

- Latest edition of the red book

Meanwhile I will embark on some project just to use what I have learned so far.

So, my question is whether I should really start with something deprecated and probably not done in the right way or I should just go with the latest version of the red book?

How have you started? What do you think is important?

Greetings,

Martin

Advertisement

I say: Go with shaders. Fixed function pipeline OpenGL is pretty darn old, shaders are nice, you can do cool stuff with them. "Modern" OpenGL is nicer to use too (ie, OpenGL 3 and up).

How have you started?

I started with OpenGL 3.3, basically with barely any knowledge about C++ (or OOP in general) and a kinda basic idea on linear algebra (linear systems, basic transformations). So I just banged my head against it again and again until stuff started to make sense. Wouldn't you know it, after a while you start to Google around for stuff you want to make yourself instead of reading some tutorial that says what you have to do.

I started here http://www.arcsynthesis.org/gltut/ reading it again and again until the concepts started to sink in. I'm not a big fan of C++ so I didn't invested much time programming at first, rather I poked at the example sources. After a while I was getting the hang of it so I started implementing things in my language of choice, and started to build up from there. First project was drawing a triangle to screen, second project was drawing an entire heightmap to screen with a flying camera, then added directional lighting and basic "stick to the ground" navigation, then I had a break from graphics and now I'm back at it trying things I haven't done before (deferred renderer, other kinds of lighting, texturing, specular, etc).

At least in my case I didn't needed a full book to start with, nor for a long time. That online book I linked was enough to get started. Right now I do have a 5th edition Red Book when I need to look for specific things, since now at least I have an idea on what to look for. For many things I've also asked here in the chat, various knowledgeable people log in from time to time and its excellent when you need fast "yes" or "no" questions answered (which otherwise lead you to a lengthy revision of an entire chapter on the subject if you looked at a book just to find that one thing you're trying to do).

What do you think is important?

Jumping straight to what you want to do. If you have a clear goal on what you want to do, half the time the "step by step" procedures to learning something can get tedious. Some might tell you "Oh, you first start with fixed function to get your feet wet, then you can see a little of 2D graphics, then you can start with 3D graphics, then you can move on to shaders, then..." And so on.

If you're determined to do one of those things specifically, jump right at it, otherwise you might lose interest in the whole thing along the longer road.

EDIT: Oh and learning with video tutorials is slow as snails. Reading is more cost effective, in my case at least.

"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

I'd suggest against learning the deprecated functionality first before learning modern OpenGL if modern OpenGL is your end-goal. The deprecated functionality doesn't translate too well to modern OpenGL concepts so most of your time learning the old OpenGL would be wasted. Learning old OpenGL is nowadays only useful if you're targeting low-end platforms, but even those are getting more scarce.

Learning modern OpenGL also has the advantage that you need to understand good concepts of graphics programming before actually being able to draw cool stuff, which makes you a better graphics programmer in the end.

Regarding decent modern OpenGL tutorials, I think there are a few good online tutorials out there that will at least get you started in the right direction before embarking into more 'reference-like' books. One of the good online tutorials is Arcsynthesis as TheChubu mentioned. You can check one of my previous posts to see a (relatively small) list of good modern OpenGL tutorials nowadays where some might suit your needs more than others.

Unfortunately, it seems the newest version is 3.0 in my case. I am using the Intel HD Graphics 3000 and Ubuntu as OS. Is this a huge drawback?


Unfortunately, it seems the newest version is 3.0 in my case. I am using the Intel HD Graphics 3000 and Ubuntu as OS. Is this a huge drawback?
Hm, Intel drivers on Linux are open source, developed by Intel itself. That team works on Mesa, which is an open source driver stack for Linux. Now, as far as I know, Mesa currently has all of OpenGL 3.3 implemented and they're working on OpenGL 4 features, I'm not sure for HD 2000, but HD 3000 should support all of OpenGL 3.3 in Linux.

Probably after an update (or in a newer Ubuntu release) you should have OpenGL 3.3 compatibility.

"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

http://www.arcsynthesis.org/gltut/
http://ogldev.atspace.co.uk/
http://www.opengl-tutorial.org/
http://lazyfoo.net/tutorials/OpenGL/
http://open.gl/
http://antongerdelan.net/opengl/
http://www.mbsoftworks.sk/index.php?page=tutorials&series=1
http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/
http://www.ozone3d.net/tutorials/

No, I use the latest dev version of Mesa and the opengl version is 3.0. I am stuck with it.

This topic is closed to new replies.

Advertisement