| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #include "anki/renderer/Dbg.h"
- #include "anki/renderer/Renderer.h"
- #include "anki/resource/ShaderProgramResource.h"
- #include "anki/scene/Scene.h"
- #include "anki/scene/Light.h"
- #include "anki/core/Logger.h"
- namespace anki {
- //==============================================================================
- Dbg::~Dbg()
- {}
- //==============================================================================
- void Dbg::init(const Renderer::Initializer& initializer)
- {
- enabled = initializer.dbg.enabled;
- if(!enabled)
- {
- return;
- }
- try
- {
- fbo.create();
- fbo.setColorAttachments({&r->getPps().getFai()});
- fbo.setOtherAttachment(GL_DEPTH_ATTACHMENT, r->getMs().getDepthFai());
- if(!fbo.isComplete())
- {
- throw ANKI_EXCEPTION("FBO is incomplete");
- }
- }
- catch(std::exception& e)
- {
- throw ANKI_EXCEPTION("Cannot create debug FBO") << e;
- }
- drawer.reset(new DebugDrawer);
- sceneDrawer.reset(new SceneDebugDrawer(drawer.get()));
- }
- //==============================================================================
- void Dbg::run()
- {
- ANKI_ASSERT(enabled);
- Scene& scene = r->getScene();
- fbo.bind();
- GlStateSingleton::get().disable(GL_BLEND);
- GlStateSingleton::get().enable(GL_DEPTH_TEST, depthTest);
- drawer->setViewProjectionMatrix(r->getViewProjectionMatrix());
- drawer->setModelMatrix(Mat4::getIdentity());
- //drawer->drawGrid();
- for(auto it = scene.getSceneNodesBegin();
- it != scene.getSceneNodesEnd(); it++)
- {
- SceneNode* node = *it;
- Spatial* sp = node->getSpatial();
- if(sp)
- {
- sceneDrawer->draw(*node);
- }
- }
- /*for(const Sector* sector : scene.sectors)
- {
- sceneDrawer->draw(sector->getOctree());
- }*/
- scene.getPhysics().debugDraw();
- drawer->flush();
- }
- } // end namespace anki
|