Search code examples
linuxopengl3dsdlscenegraph

Start with a scene graph engine or with opengl direct?


I am a professional developer working mostly with Java but on my spare time i like to play around with different languages and libraries. The thing is that i want to start learning how to develop 3D enabled applications or games. There are alot of engines out there but im afraid that by using those directly i will fail to learn the basics of 3d development since they are so high level.

Should i start programming with a scene graph engine, a library like SDL or go straight towards working with opengl?

I do all development on linux but i want the things that i develop to be cross platform.


Solution

  • I would start going with plain OpenGl. Do some basic scenes and start building your own "3D engine" from there. It is probably gonna be bad, since you will be learning and will have to manipulate by yourself a LOT of low level stuff. However, I think that's what you want to learn.

    Don't create too complex things, I would go only to the basics, and after mastering that (I refer to matrix manipulations, camera, frustrum, occlusion, etc.) look at some 3D engines, to see how they implemented it. I would start using them at that time.

    You need a simple toolkit to set up an OpenGL canvas. I recommend GLUT, which is old and VERY VERY simple. It will help you set a simple screen. Lower level than that will be unportable, and is going to be a little pain to create (Xorg calls? Sigh...). Lots of toolkit libraries have 3D canvas (QT, SDL, etc.). But the good point of GLUT is that it only creates your window, set up some functions and that's it.

    A very nice 3D engine, which you might want to look after looking at the basics of OpenGL is Ogre. It is well programmed and simple to use.