Example #1
0
/*
=============
OpenGLModel::PreRender

	Uses the appropriate program for the model
=============
*/
void OpenGLModel::PreRender( void ) {
	if ( !m_visible ) { return; }

	OpenGLProgramManager::GetInstance()->UseProgramWithFeatures( m_requiredFeatures );
	OpenGLProgram* prog = OpenGLProgramManager::GetInstance()->GetActiveProgram();
	if ( !prog ) { 
		return; 
	}

	if ( m_animator ) {
		m_animator->PreRender();
	}

	for ( unsigned int i = 0; i < m_meshCount; ++i ) {
		if ( m_meshes[i] ) {
			m_meshes[i]->PreRender();
		}
	}

	if ( m_attachedPass & PassType::TRANSPARENCY ) {
		prog->SetUniform( "u_Opacity", GetOpacity() );
	}
	
	if ( m_requiredFeatures & ProgramFeatures::NORMALS ) {
		prog->SetUniform( "u_NormalMatrix", glm::inverse( glm::transpose( glm::mat3( m_renderer->GetCameraData().GetViewMatrix() * GetCompositeMatrix() ) ) ) );
	}
	
	prog->SetUniform( "u_ModelMatrix", GetCompositeMatrix() );
	( ( const OpenGLRenderModule* )m_renderer )->SendGlobalUniforms();
}	
Example #2
0
bool FxSystem_c::GetBoundingSphereWld(FxSphere_c* sphere)
{
    if (!m_boundingSphere)
    {
        return false;
    }
    RwMatrixTag* composite = g_fxMan.FxRwMatrixCreate();
    GetCompositeMatrix(composite);
    RwV3dTransformPoints(&sphere->center, &m_boundingSphere->center, 1, composite);
    sphere->center = m_boundingSphere->center;
    g_fxMan.FxRwMatrixDestroy(composite);
    return true;
}