Post

Done with math!

Well, not completely. Maths will stay and it won't go away anywhere. I've just finished the basic math library for my engine. I had to implement classes for 2D, 3D, 4D vectors and two kinds of common matrices 3x3 and 4x4 and add wrappers around standard library math functions. Alot of boring stuff. Well, I'm cheating a little because vector part I've made long time ago. I had only to change internal representation of those vectors. Earlier I've stored x, y, z, w coordinates inside individual class members (floats), but I've put them into one array of floats.

So, I can now easier bind program variables with use of **glUniform*** functions and **fv** postfix. It's much more handy passing values in one data stream than individually one after another.

The only thing which I'm missing is member functions for setting identity matrices and transpose matrix functionality, but I save it for later and will add it when I will really need it.

I've also got simple basic GLSL shader manager with most basic shader programs:

  • flat shading
  • point light, diffuse lighting only
  • simple diffuse, directional, and vertex based light
  • texturing polygons
  • texturing polygons with modulation (multiplying of texture with underlying color)

What will be next? For sure first virtual camera implementation and first renderings without fixed pipeline. After that I think I will start to incorporate other systems for device input and sound. So, to sum things up I've got system which works on linux (32/64 bit)/windows (support can be added easily for MacOS and OpenGL ES devices too), which contains maths module (trigonometry, common vector types and matrices), saving/loading startup configuration, logging functionality (which can be easily switched off or disabled in release builds), bare bones of platform agnostic OpenGL renderer with legacy/compatibility/core context creation, basic shader manager.

Everything working under cross platform windowing system of choice (Qt 4) and win32 api too. I was too lazy to implement GLX version, that's why I went Qt :P.

So, things that will follow soon will be certainly ohhhh sooo cooooooooool! Like non-euclidean geometry, rendering and stuff 😉

lost in dimension

This post is licensed under CC BY 4.0 by the author.