In OpenGL ES 2.0, there is no matrix stack. I really do miss the matrix stack, so I decided to take a cue from the Direct3D utility library, where there is a matrix stack class.
My class interface is heavily inspired by the D3D class, but there was no implementation to peek at, so I had to figure out the implementation of the methods on my own. If anyone is interested in the code, I am willing to share.
I have ported most of my game engine to Objective-C, but since the open source GLGX math library I am using is in C++, I decided to write all my math related classes in C++.
#include "GLGXMath.h" #define MAX_MATRIX_STACK_LEVELS 32 class MatrixStack { private: GLGXMATRIX stack[MAX_MATRIX_STACK_LEVELS]; int currentLevel; public: MatrixStack(); void clear(); const GLGXMATRIX *getTop() const; void loadIdentity(); void loadMatrix(GLGXMATRIX *matrix); void multMatrix(GLGXMATRIX *matrix); void multMatrixLocal(GLGXMATRIX *matrix); void pop(); void push(); void rotateAxis(GLGXVECTOR3 *vector, float angle); void rotateAxisLocal(GLGXVECTOR3 *vector, float angle); void rotateYawPitchRoll(float yaw, float pitch, float roll); void rotateYawPitchRollLocal(float yaw, float pitch, float roll); void scale(float x, float y, float z); void scaleLocal(float x, float y, float z); void translate(float x, float y, float z); void translateLocal(float x, float y, float z); };
Comments are subject to review and will not be shown until they have been approved, for the purpose of keeping spammers and morons away.
Hello, my name is Martin Johannesson and this is my home on the web. I live in Stockholm, Sweden, where I work as a software engineer at a software company.
Ever since I was a kid and discovered the art of programming on my
C64,
I've been tinkering with my own little software projects and experiments.
This site is one such experiment.
more...