Over the past few hours, I have wrestled my consciences to regain control of my thoughts. Okay that was just joking, but what it figuratively meant that I won’t be writing about Slade but writing as Slade, which incase you did not know is myself.
For the past two nights I stayed awake till dusk to catch the Champion’s League semi-final games. And in between those days I was being a geek journeying (well on a low gear on a go-cart) through pixels and perspectives; or journeying through equations, symbols and code if you like. What I mean is I am learning 3D Graphics programming.
I have done some 3D programming with OpenGL in the past and understood a little bit the theory of 3D engines. That was back in the days - I followed the excellent NEHE OpenGL tutorials. The venerable tutorial site is still up and as good as ever. Any programmer interested in 3D programming should definitely check out that site.
3D graphics programming is really challenging especially if you are using the DirectX API like I am now. I remember Tim Sweeney (the lead programmer of Unreal) saying that this is the area where the ‘fun’ in games programming comes in the flavor of math, algorithms and optimizing. Believe me, if you really want to understand 3D graphics, you better be good at your math, especially linear algebra (vectors and matrices). It took me hours of concentration during the past two nights to barely grasp some 3D concepts and the mathematics – even with some experiences with 2D graphics and a strong (but lack of practice) mathematics background.
Oh yeah bare in mind that my intention is to build a 3D engine or to REALLY understand what goes beneath a good one. I am really going relatively low level with all the complex math, assembly optimization, floating-point manipulation, etc. On a practical side I am currently building a wire-frame software-based 3D engine on Win32 GDI. I am using DirectX’s helper functions (D3DX) to perform the mathematics given that it will take me a while to optimize my own math engine. However I am not really shying away from the math engine – just taking it step-by-step. All the headache – but it is still really darn fun.
Hopefully the post has not been too technical for my faithful non-technical readers here. As the description of this blog says, I just want to share the experiences of my journey perusing my ambition.