I have some fundamental points/questions about OpenGL, not all involving code but concepts as well. I would be grateful if you could answer, affirm or expand on any of them. I warn you, some might be naive, so please bear with me.
I understand that OpenGL is just a standard, as opposed to a piece of software. For example, 'getting' OpenGL actually involves getting a third-party implementation which doesn't necessarily have to be endorsed by Khronos.
OpenGL usually refers to the combination of the GL utilities (GLU) and the GL utilities toolkit (GLUT). They have methods beginning with
glu
andglut
, resp. and the 'basic' OpenGL methods, that begin with simplygl
, are implemented by those that make graphics drivers, i.e. NVIDIA?I assume that
glut
methods are OS-specific helpers, for exampleglutKeyboardFunc()
has to be, to interpret the keyboard. So if I wanted a more powerful alternative way to interpret keyboard input, I would just use the OS API. OpenGL itself is purely about graphics, butglut
has this sort of thing since graphics is not much without real-time human control.It seems to me that
glu
methods may be identical to calling a series of lower-levelgl
methods. One example I would like to quote isglOrtho()
andgluPerspective()
. They seem to me to have similar ways of working, but calculating perspective may be more complex, sogluPerspective()
is for convenience, but might just resolve to somegl
methods.I have studied basic OpenGL using freeglut at university, and I keep having this vision of a 'hardcore' way of using OpenGL, using only low-level methods. I don't know if this is a totally naive thought, but is there a 'professional' way of writing OpenGL, to get out its maximum functionality? Like, presumably, game developers wouldn't use
glutPostRedisplay()
for example, right? It seems too easy and convenient, like it hides a lot of what is going on. I suspect this is also true for C++ since GLUT callbacks aren't friendly with methods in namespaces (as I've seen in other questions).