
OpenGL 101: Matrices – projection, view, model - AlexeyBrin
http://solarianprogrammer.com/2013/05/22/opengl-101-matrices-projection-view-model/?
======
eropple
It's nice to see somebody actually putting together tutorials for using OpenGL
the right way. It's unfortunate how many people are still taught the old,
deprecated methods of using OpenGL via ancient tutorials--my first reflex upon
seeing this tutorial was to open it and cmd-F for "glPushMatrix", I was
pleasantly surprised.

FreeImage has a nonstandard and mildly encumbered license, though. I use
LodePNG instead (MIT License); limiting my asset pipeline to PNGs is already a
good idea.

~~~
zerr
Old - You mean the fixed pipeline? Also, what's particularly wrong with
glPushMatrix?

~~~
oofabz
glPushMatrix and many other functions were deprecated five years ago with the
release of OpenGL 3. It is only available now in compatibility profile
contexts, for backwards compatibility. You can't use it in core profile,
OpenGL ES, or WebGL.

~~~
wtracy
It's present in OpenGL ES 1.x, but your point still stands.

~~~
dualogy
Same issue -- since shader-based ES 2.x (and now 3.x) hit the scene, the
fixed-function ES 1.x may well be considered deprecated. Sure there's still
plenty of 1.x-only devices floating around. But ultimately it's a thing of the
past.

------
angersock
An excellent primer on modern OpenGL I've found to be here (one I've
shamelessly cribbed and adapted when teaching):

[http://duriansoftware.com/joe/An-intro-to-modern-
OpenGL.-Cha...](http://duriansoftware.com/joe/An-intro-to-modern-
OpenGL.-Chapter-1:-The-Graphics-Pipeline.html)

~~~
edwintorok
Another one that I like is:
[http://www.arcsynthesis.org/gltut/](http://www.arcsynthesis.org/gltut/) I was
looking forward to its Advanced Lighting chapter, but apparently its not been
written yet.

~~~
dualogy
Yeah this one is extremely good. Essential reading for the budding GL
developer.

Don't hold your breath for the missing chapters though. I believe it hasn't
been updated / extended since almost a year.

------
jasin
It's a good idea to always name your matrices in a manner that explicitly
states the source and destination coordinate systems. So rather than
'projection', 'view' and 'model' you'd have something like 'viewToClip',
'worldToView' and 'modelToView'. Then when you concatenate and invert matrices
to create new ones, their names are self-explanatory as are their assumed
inputs and outputs. It's quite easy to tell what a 'clipToWorld' matrix does.
'viewProjectionInverted' \- not so much.

------
thatswrong0
If you're interested in learning more about computer graphics I would
recommend checking out cs184x in October: [https://www.edx.org/course/uc-
berkeley/cs-184-1x/foundations...](https://www.edx.org/course/uc-
berkeley/cs-184-1x/foundations-computer-graphics/1003)

The only problem with the course is that it uses some deprecated OpenGL in
order to ensure maximum compatibility, but it's still quite worthwhile.

------
DigitalJack
I'm excited to see this. I missed the prior 3 posts so ill start there.

------
ballard
Ah nice. Reminds me of ECS175, IIRC, crash course in quaternions and
reimplement some of the OGL pipeline in c.

------
godbolev
Does anyone know where I can find some really great OpenGL ES 2.0 tutorials
for Android?

~~~
AlexeyBrin
Pragmatic has recently published a book about OpenGL ES 2.0 for Android
(didn't finished to read the book yet).

The author of this book has also some intro material on his blog.

