X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fzsortedscene.cpp;h=46b14dbb6a672dbfd044b1ffa7463695e9212244;hb=HEAD;hp=0d50ae1ea46fe9536f19c9ee094dee5272beb7a1;hpb=b345b919f572b35042d7c50291422f2f917e5a08;p=libs%2Fgl.git diff --git a/source/zsortedscene.cpp b/source/zsortedscene.cpp deleted file mode 100644 index 0d50ae1e..00000000 --- a/source/zsortedscene.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include "camera.h" -#include "renderer.h" -#include "zsortedscene.h" - -using namespace std; - -namespace Msp { -namespace GL { - -ZSortedScene::ZSortedScene(): - order(BACK_TO_FRONT), - reference(FURTHEST) -{ } - -void ZSortedScene::set_order(SortOrder o) -{ - order = o; -} - -void ZSortedScene::set_reference(DepthReference r) -{ - reference = r; -} - -void ZSortedScene::render(Renderer &renderer, const Tag &tag) const -{ - const Camera *camera = renderer.get_camera(); - if(!camera) - return SimpleScene::render(renderer, tag); - - std::vector sorted_renderables; - sorted_renderables.reserve(renderables.size()); - - const Vector3 &camera_pos = camera->get_position(); - const Vector3 &look_dir = camera->get_look_direction(); - float radius_factor = reference-1.0f; - float sign = 1.0f-order*2.0f; - - bool use_frustum = setup_frustum(renderer); - for(RenderableSet::const_iterator i=renderables.begin(); i!=renderables.end(); ++i) - if(!use_frustum || !frustum_cull(**i)) - { - float z = 0; - if(const Matrix *model_matrix = (*i)->get_matrix()) - { - if(const Geometry::BoundingSphere *bsphere = (*i)->get_bounding_sphere()) - z = dot(*model_matrix*bsphere->get_center()-camera_pos, look_dir)+bsphere->get_radius()*radius_factor; - else - z = dot(*model_matrix*Vector3()-camera_pos, look_dir); - } - sorted_renderables.push_back(DepthRenderable(z*sign, *i)); - } - - sort(sorted_renderables.begin(), sorted_renderables.end()); - - for(vector::const_iterator i=sorted_renderables.begin(); i!=sorted_renderables.end(); ++i) - i->renderable->render(renderer, tag); -} - - -ZSortedScene::DepthRenderable::DepthRenderable(float d, const Renderable *r): - depth(d), - renderable(r) -{ } - -} // namespace GL -} // namespace Msp