DebugDrawer::DebugDrawer() : lines(nullptr) , triangles(nullptr) { Allocator* alloc = AllocatorGetThis(); MaterialHandle debug = MaterialCreate(alloc, "Debug"); Material* mat = debug.Resolve(); mat->setBackfaceCulling(false); mat->setBlending(BlendSource::SourceAlpha, BlendDestination::InverseSourceAlpha); mat->setDepthCompare( DepthCompare::LessOrEqual ); mat->setDepthOffset(Vector2(-1.0f, 1.0f)); //mat->setDepthRange( Vector2(0.1f, 0.9f) ); //mat->setDepthWrite(false); // Lines GeometryBuffer* linesVB = AllocateThis(GeometryBuffer); linesVB->setBufferAccess(BufferAccess::Write); linesVB->setBufferUsage(BufferUsage::Dynamic); SetupDebugVertexFormat(linesVB); lines = RenderBatchCreate(alloc); lines->setGeometryBuffer(linesVB); lines->setPrimitiveType(PrimitiveType::Lines); lines->setMaterial(debug); lines->setRenderLayer(RenderLayer::PostTransparency); renderables.push_back(lines.get()); // Triangles GeometryBufferPtr trianglesVB = AllocateThis(GeometryBuffer); trianglesVB->setBufferAccess(BufferAccess::Write); trianglesVB->setBufferUsage(BufferUsage::Dynamic); SetupDebugVertexFormat(trianglesVB.get()); triangles = RenderBatchCreate(alloc); triangles->setGeometryBuffer(trianglesVB); triangles->setPrimitiveType(PrimitiveType::Triangles); triangles->setMaterial(debug); triangles->setRenderLayer(RenderLayer::PostTransparency); renderables.push_back(triangles.get()); // Quads GeometryBufferPtr quadsVB = AllocateThis(GeometryBuffer); quadsVB->setBufferAccess(BufferAccess::Write); quadsVB->setBufferUsage(BufferUsage::Dynamic); SetupDebugVertexFormat(quadsVB.get()); quads = RenderBatchCreate(alloc); quads->setGeometryBuffer(quadsVB); quads->setPrimitiveType(PrimitiveType::Quads); quads->setMaterial(debug); quads->setRenderLayer(RenderLayer::PostTransparency); renderables.push_back(quads.get()); reset(); }