Beispiel #1
0
void GLContext::strokeLine(const Vec4f& p0, const Vec4f& p1, U32 abgr)
{
    Vec4f v0 = m_vgXform * p0;
    Vec4f v1 = m_vgXform * p1;
    Vec2f dir = (v1.getXY() / v1.w - v0.getXY() / v0.w).normalized();
    Vec4f x0 = Vec4f(dir * m_viewScale * v0.w, 0.0f, 0.0f);
    Vec4f y0 = Vec4f(dir.perpendicular() * m_viewScale * v0.w, 0.0f, 0.0f);
    Vec4f x1 = Vec4f(dir * m_viewScale * v1.w, 0.0f, 0.0f);
    Vec4f y1 = Vec4f(dir.perpendicular() * m_viewScale * v1.w, 0.0f, 0.0f);

    VGVertex vertices[] =
    {
        { v0, 1.0f }, { v0 - x0 - y0, 0.0f }, { v0 - x0 + y0, 0.0f },
        { v0, 1.0f }, { v0 - x0 + y0, 0.0f }, { v1 + x1 + y1, 0.0f },
        { v0, 1.0f }, { v0 - x0 - y0, 0.0f }, { v1, 1.0f },
        { v1, 1.0f }, { v1 + x1 - y1, 0.0f }, { v1 + x1 + y1, 0.0f },
        { v1, 1.0f }, { v1 + x1 - y1, 0.0f }, { v0 - x0 - y0, 0.0f },
        { v1, 1.0f }, { v1 + x1 + y1, 0.0f }, { v0, 1.0f },
    };
    drawVG(vertices, FW_ARRAY_SIZE(vertices), abgr);
}