//--------------------------------------------------------------------------- void GrProjection::RecomputeMatrix() const { assert( m_bDirty ); if ( IsOrtho() ) { // orthographic. _glhOrthof2( (PxF32*)m.cProjMat.GetData(), m_fLeft, m_fRight, m_fBottom, m_fTop, m_fZNear, m_fZFar ); } else { // TODO: incorporate left/right/bottom/top to perform offcenter projection! assert( (m_fLeft == -1.0F) && (m_fRight == 1.0F) && (m_fBottom == -1.0F) && (m_fTop == 1.0F) ); if ( m_fZFar == 0.0F ) { // infinite perspective projection matrix. _glhPerspectiveInfiniteFarPlanef2( (PxF32*)m.cProjMat.GetData(), RadToDeg(m_fFovY), m_fAspect, m_fZNear ); } else { // regular perspective projection matrix. _glhPerspectivef2( (PxF32*)m.cProjMat.GetData(), RadToDeg(m_fFovY), m_fAspect, m_fZNear, m_fZFar ); } } }
void OpenGLSceneRenderer::doRenderBegin(const Scene& scene, const SkyDragonEngineOptions& engineOptions) { if (!_initialized) { LOG4CPLUS_DEBUG(_logger, "Initializing renderer."); _initialize(); } glPushMatrix(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); float matrix[16]; glLoadIdentity(); _glhPerspectivef2(matrix, 45, 1024./768., 0.1, 100.); glMultMatrixf(matrix); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glShadeModel(GL_SMOOTH ); }