#ifndef OpenGL32_MatrixStack_hpp | |
#define OpenGL32_MatrixStack_hpp | |
#include "Renderer/Matrix.hpp" | |
namespace sw | |
{ | |
class MatrixStack | |
{ | |
public: | |
MatrixStack(int size = 2); | |
~MatrixStack(); | |
void identity(); | |
void load(const float *M); | |
void load(const double *M); | |
void translate(float x, float y, float z); | |
void translate(double x, double y, double z); | |
void rotate(float angle, float x, float y, float z); | |
void rotate(double angle, double x, double y, double z); | |
void scale(float x, float y, float z); | |
void scale(double x, double y, double z); | |
void multiply(const float *M); | |
void multiply(const double *M); | |
void frustum(float left, float right, float bottom, float top, float zNear, float zFar); | |
void ortho(double left, double right, double bottom, double top, double zNear, double zFar); | |
bool push(); // False on overflow | |
bool pop(); // False on underflow | |
const Matrix ¤t(); | |
bool isIdentity() const; | |
private: | |
int top; | |
int size; | |
Matrix *stack; | |
}; | |
} | |
#endif // OpenGL32_MatrixStack_hpp |