X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frenderer.cpp;h=c558757f885654e0646f6392d9866b4bf52b205e;hb=bc2fe1bd3e167fd8eed05f9ffeda3c255f445f70;hp=bc49b0f802941f3ae2a7509ae86351dc51a67ca8;hpb=c46c75f8e3863dc3c6f91a2d5dc7f58333ec9260;p=libs%2Fgl.git diff --git a/source/renderer.cpp b/source/renderer.cpp index bc49b0f8..c558757f 100644 --- a/source/renderer.cpp +++ b/source/renderer.cpp @@ -61,6 +61,16 @@ void Renderer::begin(const Camera *c) } } +void Renderer::set_matrix(const Matrix &matrix) +{ + mtx_stack.load(matrix); +} + +void Renderer::transform(const Matrix &matrix) +{ + mtx_stack *= matrix; +} + void Renderer::set_texture(const Texture *t) { state->texture = t; @@ -257,10 +267,7 @@ void Renderer::apply_state() { const Matrix &m = mtx_stack.top(); standard_shdata.uniform("eye_obj_matrix", mtx_stack.top()); - LinAl::SquareMatrix nm; - for(unsigned i=0; i<3; ++i) - for(unsigned j=0; j<3; ++j) - nm(i, j) = m(i, j); + LinAl::SquareMatrix nm = m.block<3, 3>(0, 0); nm = transpose(invert(nm)); standard_shdata.uniform_matrix3("eye_obj_normal_matrix", &nm(0, 0)); changed &= ~MODERN_MATRIX;