General Question. Please include what works and what doesn’t from past experiences.
I’ve developed an interest in computer graphics not too long ago and just started OpenGL. What methods of practice and studying would you suggest for gaining mastery?
I know the cliche answer of “Program ‘x’ amount of hours per day”. But like, starting out, what should I be programming? What should I learn how to do first, and then what’s next? How do you progress?
Any answers would be greatly appreciated.
North Carolina State University '11
I would put myself at the “almost proficient” stage in OpenGL right now…
I started by reading the redbook online and making sure that I understood what was going on. Beyond that, you need to learn how to use things added to the spec since then, (SHADERS!!, VBOs, things like that). The NeHe tutorials are pretty good, though I’ve only looked at a couple of them. I’ve set my self a huge goal that’s totally out of reach for the near future, so I may never get there, but I learn something during each chunk of time I spend on it. Pick a project and work towards it, learning each technique you need to get to the finish.
Basically, this has given me an overall understanding of how OpenGL works, though I haven’t yet mastered it.
Of course, I’m not an expert yet, so keep that in mind when reading this.
In my experience, I think there are universal truths about becoming great at something, whether it is 3D graphics programming or skiing.
The NeHe tutorials pointed out by todayman are a classic. Most people in openGL community know about the NeHe site, however it is not as frequently updated with new tutorials anymore.
On the other hand, these, less known OpenGL tutorials are great as well:
“If you always put limit on everything you do, physical or anything else. It will spread into your work and into your life. There are no limits. There are only plateaus, and you must not stay there, you must go beyond them.”
IMO The Red Book is fast going out of date with the advent of GL3.0 and all the newer types of buffer objects and so on. Having said that, I bought it and reading it gave me a good base knowledge of OpenGL, which will always be useful. But increasingly it gathers dust unless I have a brain fart about blending or something like that…
NeHe I found hard to read, and often had problems with the source examples.
More and more as OpenGL develops it’s going to be important to be proficient with the programmable (shader) part of OpenGL, and be familiar with more esoteric ways of transferring / managing data. For that reason the following resources I think are very very helpful these days…
The Lighthouse 3D tutorial web site is one which I often refer to as it loads quickly and I remember the name. It also has lots of bare bones examples of getting shaders and so on setup and working…
For Pixel Buffers / streaming / Vertex Buffers / Arrays and the like I found these web pages very usefull…
The Orange Book is probably the best starting point for a reasonably proficient programmer getting into OpenGL these days… and will carry you through to the point where you are ready to accept and understand newer GL3.0 and beyond OpenGL developments…
Once you are proficient with all that then reading the actual OpenGL3.0 specification, or subsequent specifications should keep you up to date as time rolls by.
Oh, and there really is no substitute for programming, making mistakes etc. etc…
Until you’ve typed glVertexAttribxx and so on about a million times you will forever be cutting and pasting, or looking at crib sheets for the spelling and parameters… even if your dev system has predictive text of some sort!!
Hope that helps…
search the net for a very simple tutorials ,to get an idea about opengl( no need to understand everything in the tuto). having finished the tutorials go to red book ,and try to understand very very well the opengl fixed pipleine ( how vertex pass throught each stage : eye space , projection space and rasterization and finally to screen coordinate , and when the texture mapping are applied lighting blending…and pixel transfer operations from the host memory to device memroy. try to be familiar with this keywords and every time u read something about opengl remember the opengl fixed pipleine, keep in mind the opengl pipeline!!
when u feel that u have enough experience , u can go to next step : the programmable pipeline(or shaders) instead of the fixed one …
and here i suggest u that u pass a lot of time on understanding the programmable pipeline and what is vertex processor and pixel processor , and when u have the orange book , try to emulate the old fixed pipeline using shaders .once u got the heart of opengl u can go at any time to explore the extensions.for extensions they are not very well organized , we have only specifications and some tutorials, but trust me , once u got the concept of opengl , reading and understanding an extension specification is not hard at all.