示例#1
0
TexturePtr PostProcBlur::Render(QuadPtr fullScreenQuad, TexturePtr in)
{
	fbo->Set();

	glClearColor(0.f, 0.f, 0.f, 1.f);

	loopi(effectPower)
	{
		fbo->EnableSingleBuffer(0);

		if (i == 0)
		{
			in->Set(0);
		}
		else
		{
			vBlurTex->Set(0);
		}
		SetBindingSafe(hBlurShader, "screen", 0);
		SetBindingSafe(hBlurShader, "screenWidth", (float)effectWidth);
		SetBindingSafe(hBlurShader, "screenHeight", (float)effectHeight);
		hBlurShader->Set();

		glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
		fullScreenQuad->Render();

		fbo->EnableSingleBuffer(1);

		hBlurTex->Set(0);
		SetBindingSafe(vBlurShader, "screen", 0);
		SetBindingSafe(vBlurShader, "screenWidth", (float)effectWidth);
		SetBindingSafe(vBlurShader, "screenHeight", (float)effectHeight);
		vBlurShader->Set();

		glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
		fullScreenQuad->Render();
	}

	fbo->Unset();

	return vBlurTex;
}
示例#2
0
TexturePtr PostProcEdge::Render(QuadPtr fullScreenQuad, TexturePtr in)
{
    m_fbo->Set();

    glClearColor(0.f, 0.f, 0.f, 1.f);

    m_fbo->EnableSingleBuffer(0);

    in->Set(0);

    SetBindingSafe(m_shader, "screen", 0);
    SetBindingSafe(m_shader, "screenWidth", (float)effectWidth);
    SetBindingSafe(m_shader, "screenHeight", (float)effectHeight);
    m_shader->Set();

    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
    fullScreenQuad->Render();

    m_fbo->Unset();

    return m_tex;
}