Exemplo n.º 1
0
void STDRenderer::draw(const Color& clr, const RectF& srcRect, const RectF& destRect)
{
    Color color = clr;
    if (_blend == blend_premultiplied_alpha)
        color = color.premultiplied();

    vertexPCT2 v[4];
    fillQuadT(v, srcRect, destRect, _transform, color.rgba());


#ifdef OXYGINE_DEBUG_T2P
    if (_base != white && _showTexel2PixelErrors)
    {
        Rect viewport;
        _driver->getViewport(viewport);

        bool t = checkT2P(viewport, _vp, &v[0], &v[3], _base->getWidth(), _base->getHeight());
        if (!t)
        {
            float c = (sinf((float)getTimeMS() / 200 + v[0].x * v[0].y) + 1) / 2.0f;
            Color b = lerp(Color(rand() % 255, rand() % 255, rand() % 255, 255), color, c);
            fillQuadT(v, srcRect, destRect, _transform, b.rgba());
        }
    }
#endif

    addVertices(v, sizeof(v));
}
Exemplo n.º 2
0
    void TextRenderer2::draw(const AffineTransform& tr, spNativeTexture texture, unsigned int color, const RectF& srcRect, const RectF& destRect)
    {
        if (_texture != texture)
        {
            _renderer->setTexture(texture, 0, true);
            _texture = texture;
        }

        vertexPCT2 v[4];
        fillQuadT(v, srcRect, destRect, tr, color);

#ifdef OXYGINE_DEBUG_T2P
        if (_showTexel2PixelErrors)
        {
            Rect viewport;
            _renderer->getDriver()->getViewport(viewport);

            bool t = checkT2P(viewport, _renderer->getViewProjection(), &v[0], &v[3], _texture->getWidth(), _texture->getHeight());
            if (!t)
            {
                float c = (sinf((float)getTimeMS() / 200 + v[0].x * v[0].y) + 1) / 2.0f;
                Color b = interpolate(Color(rand() % 255, rand() % 255, rand() % 255, 255), color, c);
                fillQuadT(v, srcRect, destRect, tr, b.rgba());
            }
        }
#endif

        _renderer->addVertices(v, sizeof(v));
    }
Exemplo n.º 3
0
void STDRenderer::drawElement(const spNativeTexture& texture, unsigned int color, const RectF& src, const RectF& dest)
{
    if (_base != texture)
    {
        drawBatch();
        _base = texture;
    }

    vertexPCT2 v[4];
    fillQuadT(v, src, dest, _transform, color);
    addVertices(v, sizeof(v));
}