Ejemplo n.º 1
0
void PortholeRenderPass::render(Renderer* client, const DrawContext& context)
{
	if(context.task == DrawContext::OverlayDrawTask)
	{
		DrawInterface* di = client->getRenderer();

		di->beginDraw2D(context);
		di->drawRect(Vector2f(10, 10), Vector2f(100, 100), Color::Red);
		di->endDraw();
	}
}
Ejemplo n.º 2
0
void StringTextureSource::refreshTexture(Texture* texture, const DrawContext& context)
{
    // Compute text size.
    Vector2f textSize = Font::getTextSize(myText, myFontStyle);
    DrawInterface* di = context.renderer->getRenderer();

    // Initialize the texture and render target (if needed)
    if(!texture->isInitialized()) texture->initialize(textSize[0], textSize[1], GL_RGBA);
    if(myRenderTarget == NULL)
    {
        myRenderTarget = context.renderer->createRenderTarget(RenderTarget::RenderToTexture);
        myRenderTarget->setTextureTarget(texture);
    }

    // Render the string to the texture.
    myRenderTarget->bind();
    myRenderTarget->clear();

    glPushAttrib(GL_VIEWPORT_BIT);
    glViewport(0, 0, textSize[0], textSize[1]);
                
    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    glOrtho(0, textSize[0], textSize[1], 0, 0, 1);

    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();

    Font* fnt = di->getFont(myFontStyle);
    di->drawText(myText, fnt, Vector2f::Zero(), Font::HALeft | Font::VATop, myFontColor);
    di->drawRect(Vector2f::Zero(), Vector2f(1000, 1000), Color::White);

    glPopMatrix();
    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
    glPopAttrib();

    myRenderTarget->unbind();
}
Ejemplo n.º 3
0
void ImageRenderable::drawContent(const DrawContext& context)
{
    WidgetRenderable::drawContent(context);

    PixelData* tex = myOwner->getData();
    if(tex != NULL)
    {
        DrawInterface* di = getRenderer();
        di->fillTexture(tex);
        di->textureRegion(0, 0, 1, 1);
        if(!myOwner->myUseFullSource)
        {
            Rect& r = myOwner->mySourceRect;
            int w = tex->getWidth();
            int h = tex->getHeight();
            float su = (float)r.x() / w;
            float sv = 1 - (float)r.y() / h;
            float eu = (float)(r.x() + r.width()) / w;
            float ev = 1 - (float)(r.y() + r.height()) / h;
            di->textureRegion(su, ev, eu, sv);
        }
        else if(myOwner->myTile)
        {
            int w = tex->getWidth();
            int h = tex->getHeight();
            int W = myOwner->getWidth();
            int H = myOwner->getHeight();
            float eu = (float)(W) / w;
            float ev = (float)(H) / h;
            di->textureRegion(0, 0, eu, ev);
        }

        if(myTextureUniform != 0)
        {
            glUniform1i(myTextureUniform, 0);
        }

        if(myOwner->isStereo())
        {
            DrawContext::Eye eye = context.eye;
            if(eye == DrawContext::EyeLeft)
            {
                di->textureRegion(0, 0, 0.5f, 1);
            }
            else if(eye == DrawContext::EyeRight)
            {
                di->textureRegion(0.5f, 0, 0.5f, 1);
            }
        }

        Vector2f size = myOwner->getSize();
        if(myOwner->myUseFullDest)
        {
            di->rect(0, 0, size[0], size[1]);
        }
        else
        {
            Rect& r = myOwner->myDestRect;
            di->rect(r.x(), r.y(), r.width(), r.height());
        }
    }
    else
    {
        refresh();
    }
}