How To Learn Object Oriented OpenGL Engine Design?

I have been wanting to get into OpenGL programming for a while, unfortunately I have not found a good place to start. I have been researching for a year or so in t and the reference materials I have come across are way out of date, and as far as I have read, do not teach things like Vertex Buffer Objects, working with Frame Buffer Objects, optimizing a Video Memory Management System in Object Oriented Languages, how to write a Program that Writes Source Code to Shaders and compiles it on the fly…

What I aim to do is learn to program Shader-Based, High Performance, OpenGL Accelerated, 3D Game Engine Design. I have picked the Java Runtime using JOGL bindings. I might use Python(Jython?) because I need this to be Cross-platform, running on Windows, Mac, and Linux inside the web browser…

So, what I am asking is, what are some good reference materials that I can read that teach you High Performance OpenGL Game Development, Programming in Object Oriented Languages, that do not start you off by rendering stuff in immediate mode, because immediate mode is crap for Realtime 3D Applications from what I have herd, it’s all about making the OpenGL drivers to work faster, and flooding it with a gazillion driver invokes is not fast…

  1. Learn how to render VBOs in OpenGL…
  2. Develope and optimize a video memory management system, that keeps track of objects clumped together in VBOs or indexed vertex arrays…
  3. Learn how shaders work (proper use of vertex and pixel shaders, what are they usually used for to do everything…)
  4. Write a program that builds optimized shaders on the fly during runtime.
  5. Create a solid, dynamic/flexable, shader based, object oriented, high performance, hardware accelerated, 3d game engine api…

Those are my goals, how do I get there? Can anyone point me in the right direction? It is ok if the materials are not written for Java specifically, I have no problems porting C++ examples to Java or Python as long as it gets me closer to my goals…

I am also looking for a good OpenGL API reference that shows what is out of date / bad to use in OpenGL and what has been updated recently and is a good choice in general… There is way too much useless legacy stuff in OpenGL, I really have no idea what is good to use for realtime graphics, and what should have been deprecated a decade or more ago…

The OpenGL people have published what they would like to remove from the API in the recently released OpenGL 3.0 specification (see Appendix E).

For something a little clearer from this specification somebody made this list : http://www.devklog.net/2008/08/23/forward-compatible-opengl-3-entry-points/

LWJGL supports OpenGL 3.0 officially but JOGL does not (yet, of course). Regardless OpenGL 3.0’s deprications show the modern way of doing things and indicates how you should use OpenGL 2.1

I think you should start programming small experiments yourself. Forget shaders and your engine and just get a cube on the screen followed by a sphere followed by a terrible looking character made out of cubes and spheres etc…

Thank you for the list! That is very useful. I have done a lot of those experiments with cubes and things, but it’s all in immediate mode… I need some more modern tutorials that will fit more with todays modern game engines…