virtual void on_draw() { pixfmt pf(rbuf_window()); typedef agg::pixfmt_alpha_blend_gray<gray_blender, agg::rendering_buffer, 3, 2> pixfmt_r; typedef agg::pixfmt_alpha_blend_gray<gray_blender, agg::rendering_buffer, 3, 1> pixfmt_g; typedef agg::pixfmt_alpha_blend_gray<gray_blender, agg::rendering_buffer, 3, 0> pixfmt_b; pixfmt_r pfr(rbuf_window()); pixfmt_g pfg(rbuf_window()); pixfmt_b pfb(rbuf_window()); agg::renderer_base<pixfmt> rbase(pf); agg::renderer_base<pixfmt_r> rbr(pfr); agg::renderer_base<pixfmt_g> rbg(pfg); agg::renderer_base<pixfmt_b> rbb(pfb); agg::rasterizer_scanline_aa<> ras; agg::scanline_p8 sl; rbase.clear(agg::rgba(1,1,1)); agg::ellipse er(width() / 2 - 0.87*50, height() / 2 - 0.5*50, 100, 100, 100); ras.add_path(er); agg::render_scanlines_aa_solid(ras, sl, rbr, agg::gray8(0, unsigned(m_alpha.value()))); agg::ellipse eg(width() / 2 + 0.87*50, height() / 2 - 0.5*50, 100, 100, 100); ras.add_path(eg); agg::render_scanlines_aa_solid(ras, sl, rbg, agg::gray8(0, unsigned(m_alpha.value()))); agg::ellipse eb(width() / 2, height() / 2 + 50, 100, 100, 100); ras.add_path(eb); agg::render_scanlines_aa_solid(ras, sl, rbb, agg::gray8(0, unsigned(m_alpha.value()))); agg::render_ctrl(ras, sl, rbase, m_alpha); }
void StaticGeometry::DrawBoundingBox(Graphics::Renderer *r, const Aabb &bb) { vector3f min(bb.min.x, bb.min.y, bb.min.z); vector3f max(bb.max.x, bb.max.y, bb.max.z); vector3f fbl(min.x, min.y, min.z); //front bottom left vector3f fbr(max.x, min.y, min.z); //front bottom right vector3f ftl(min.x, max.y, min.z); //front top left vector3f ftr(max.x, max.y, min.z); //front top right vector3f rtl(min.x, max.y, max.z); //rear top left vector3f rtr(max.x, max.y, max.z); //rear top right vector3f rbl(min.x, min.y, max.z); //rear bottom left vector3f rbr(max.x, min.y, max.z); //rear bottom right Graphics::VertexArray *vts = new Graphics::VertexArray(Graphics::ATTRIB_POSITION | Graphics::ATTRIB_DIFFUSE); Color c(Color::WHITE); //vertices vts->Add(fbl, c); //0 vts->Add(fbr, c); //1 vts->Add(ftl, c); //2 vts->Add(ftr, c); //3 vts->Add(rtl, c); //4 vts->Add(rtr, c); //5 vts->Add(rbl, c); //6 vts->Add(rbr, c); //7 RefCountedPtr<Graphics::Material> mat(Graphics::vtxColorMaterial); Graphics::Surface surf(Graphics::TRIANGLES, vts, mat); //indices std::vector<unsigned short> &ind = surf.GetIndices(); //Front face ind.push_back(3); ind.push_back(1); ind.push_back(0); ind.push_back(0); ind.push_back(2); ind.push_back(3); //Rear face ind.push_back(7); ind.push_back(5); ind.push_back(6); ind.push_back(6); ind.push_back(5); ind.push_back(4); //Top face ind.push_back(4); ind.push_back(5); ind.push_back(3); ind.push_back(3); ind.push_back(2); ind.push_back(4); //bottom face ind.push_back(1); ind.push_back(7); ind.push_back(6); ind.push_back(6); ind.push_back(0); ind.push_back(1); //left face ind.push_back(0); ind.push_back(6); ind.push_back(4); ind.push_back(4); ind.push_back(2); ind.push_back(0); //right face ind.push_back(5); ind.push_back(7); ind.push_back(1); ind.push_back(1); ind.push_back(3); ind.push_back(5); r->SetWireFrameMode(true); r->DrawSurface(&surf); r->SetWireFrameMode(false); }