#include "Transform3.h" #include "Matrix4x4.h" #include "RenderState.h" namespace CHCDemoEngine { CGparameter Transform3::sModelMatrixParam; Transform3::Transform3(Matrix4x4 *trafo): mMatrix(trafo) { } Transform3::~Transform3() { DEL_PTR(mMatrix); } void Transform3::Load(RenderState *state) { if (!mMatrix) return; if (state->GetRenderType() == RenderState::DEFERRED) { cgGLSetMatrixParameterfc(sModelMatrixParam, (const float *)mMatrix->x); } else { glPushMatrix(); glMultMatrixf((float *)mMatrix->x); } } void Transform3::Unload(RenderState *state) { if (!mMatrix) return; if (state->GetRenderType() == RenderState::DEFERRED) { static Matrix4x4 identity = IdentityMatrix(); cgGLSetMatrixParameterfc(sModelMatrixParam, (const float *)identity.x); } else { glPopMatrix(); } } }