Пример #1
0
void RenderPipe_depth_opengl::render( GLuint target )
{
	glDepthMask(GL_FALSE);
	glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, target);

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

	glMatrixMode(GL_PROJECTION);
	glPushMatrix();
	glLoadIdentity();

	glUseProgram(m_pipeProgramID);

	GLuint reg = glGetUniformLocation(m_pipeProgramID, "u_image");
	glUniform1i(reg, 0);
	reg = glGetUniformLocation(m_pipeProgramID, "u_blurredImage");
	glUniform1i(reg, 1);
	reg = glGetUniformLocation(m_pipeProgramID, "u_zBuffer");
	glUniform1i(reg, 2);

	CMatrix inverProjMat = GetProjectionMatrix();
	inverProjMat.Invert();

	m_zInv = inverProjMat.GetColumn(3);	// only need to calculate z value, so only 4th column is needed.

	m_depthOfField = GetDepthOfFieldFactors();

	reg = glGetUniformLocation(m_pipeProgramID, "u_depthOfField");
	if (reg >= 0)
		glUniform4fv(reg, 1, (float *)&m_depthOfField);
	if (reg >= 0)
		reg = glGetUniformLocation(m_pipeProgramID, "u_zInv");
	glUniform4fv(reg, 1, (float *)&m_zInv);


	glActiveTexture(GL_TEXTURE0_ARB);

	glEnable(GL_TEXTURE_2D);
	glActiveTexture(GL_TEXTURE0_ARB);
	glBindTexture(GL_TEXTURE_2D, m_image);

	glActiveTexture(GL_TEXTURE1_ARB);
	glBindTexture(GL_TEXTURE_2D, m_blurredImage);

	glActiveTexture(GL_TEXTURE2_ARB);
	glBindTexture(GL_TEXTURE_2D, m_depthTexture);
	glActiveTexture(GL_TEXTURE0_ARB);

	renderScreenQuad();

	glMatrixMode(GL_PROJECTION);
	glPopMatrix();
	glMatrixMode(GL_MODELVIEW);
	glPopMatrix();

	glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
	glDepthMask(GL_TRUE);
}
Пример #2
0
void RenderPipe_img_opengl::render( GLuint target )
{
    glDepthMask(GL_FALSE);
    glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, target);

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

    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();

    glUseProgram(m_pipeProgramID);

    glActiveTexture(GL_TEXTURE0_ARB);
    glClientActiveTexture(GL_TEXTURE0_ARB);

    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, m_texture);

    renderScreenQuad();
    glUseProgram(0);

    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();

    glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
    glDepthMask(GL_TRUE);
}
Пример #3
0
void Z3DTextureBlendRenderer::render(Z3DEye eye)
{
  if (!m_initialized)
    return;

  if (m_colorTexture1 == NULL || m_depthTexture1 == NULL ||
      m_colorTexture2 == NULL || m_depthTexture2 == NULL)
    return;

  m_blendTextureShader.bind();
  m_rendererBase->setGlobalShaderParameters(m_blendTextureShader, eye);

  m_blendTextureShader.bindTexture("color_texture_0", m_colorTexture1);
  m_blendTextureShader.bindTexture("depth_texture_0", m_depthTexture1);

  m_blendTextureShader.bindTexture("color_texture_1", m_colorTexture2);
  m_blendTextureShader.bindTexture("depth_texture_1", m_depthTexture2);

  renderScreenQuad(m_blendTextureShader);
  m_blendTextureShader.release();
}