RenderablePtr DebugBuildFrustum( const Frustum& box ) { GeometryBuffer* gb = AllocateHeap(GeometryBuffer); MaterialHandle materialHandle = MaterialCreate(AllocatorGetHeap(), "FrustumDebug"); Material* material = materialHandle.Resolve(); material->setBackfaceCulling( false ); Renderable* renderable = AllocateHeap(Renderable); renderable->setPrimitiveType(PrimitiveType::Quads); renderable->setGeometryBuffer(gb); renderable->setMaterial(materialHandle); renderable->setPrimitiveRasterMode( PrimitiveRasterMode::Wireframe ); DebugUpdateFrustum(renderable, box); return renderable; }
RenderablePtr DebugBuildRay( const Ray& pickRay, float length ) { std::vector<Vector3> vertex; vertex.push_back( pickRay.origin ); vertex.push_back( pickRay.getPoint(length) ); std::vector<Vector3> colors( 2, Color::Red ); GeometryBuffer* gb = AllocateHeap(GeometryBuffer); gb->set( VertexAttribute::Position, vertex ); gb->set( VertexAttribute::Color, colors ); MaterialHandle material = MaterialCreate(AllocatorGetHeap(), "RayDebug"); Renderable* renderable = AllocateHeap(Renderable); renderable->setPrimitiveType(PrimitiveType::Lines); renderable->setGeometryBuffer(gb); renderable->setMaterial(material); return renderable; }
RenderablePtr DebugBuildBoundingBox( const BoundingBox& box ) { GeometryBuffer* gb = AllocateHeap(GeometryBuffer); MaterialHandle materialHandle = MaterialCreate(AllocatorGetHeap(), "BoundingBoxDebug"); Material* mat = materialHandle.Resolve(); mat->setDepthCompare( DepthCompare::LessOrEqual ); mat->setBackfaceCulling( false ); //mat->setDepthRange( Vector2(0.1f, 0.9f) ); Renderable* renderable = AllocateHeap(Renderable); renderable->setPrimitiveType(PrimitiveType::Quads); renderable->setGeometryBuffer(gb); renderable->setMaterial(materialHandle); renderable->setPrimitiveRasterMode( PrimitiveRasterMode::Wireframe ); DebugUpdateBoudingBox(gb, box, Color::White); return renderable; }