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)); }
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)); }
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)); }