Beispiel #1
0
void pl_Cam::Begin(LICE_IBitmap *fb, bool want_zbclear, pl_ZBuffer zbclear) {
  if (frameBuffer||!fb) return;

  if (WantZBuffer)
  {
    int zbsz=fb->getWidth()*fb->getHeight();
    pl_ZBuffer *zb=zBuffer.Resize(zbsz);
    if (want_zbclear)
    {
      if (!zbclear) memset(zb,0,zbsz*sizeof(pl_ZBuffer));
      else
      {
        int i=zbsz;
        while(i--) *zb++=zbclear;
      }
    }
  }
  else zBuffer.Resize(0);
  pl_Float tempMatrix[16];
  _numlights = 0;
  _numfaces = _numfaces_sorted = 0;
  frameBuffer = fb;
  plMatrixRotate(_cMatrix,2,-Pan);
  plMatrixRotate(tempMatrix,1,-Pitch);
  plMatrixMultiply(_cMatrix,tempMatrix);
  plMatrixRotate(tempMatrix,3,-Roll);
  plMatrixMultiply(_cMatrix,tempMatrix);
  
  RecalcFrustum();

  RenderTrisIn=RenderTrisCulled=RenderTrisOut=0;
  RenderPixelsOut=0.0;

}
Beispiel #2
0
void Camera::ApplyFrustum()
{
    if (flags & REQUIRE_REBUILD_PROJECTION)
    {
        RecalcFrustum();
    }

    RenderManager::Instance()->SetMatrix(RenderManager::MATRIX_PROJECTION, projMatrix);
    
    /*  Boroda: Matrix Extract Snippet
     
     float32 proj[16];
     glGetFloatv(GL_PROJECTION_MATRIX, proj);
     
     Matrix4 frustumMatrix;
     frustumMatrix.glFrustum(xmin, xmax, ymin, ymax, znear, zfar);
     glLoadMatrixf(frustumMatrix.data);
     
     for (int32 k = 0; k < 16; ++k)
     {
        printf("k:%d - %0.3f = %0.3f\n", k, proj[k], frustumMatrix.data[k]);
     }

     */
//	glMatrixMode(GL_PROJECTION);
//	glLoadIdentity();
//#ifdef __DAVAENGINE_IPHONE__
//	if (!ortho)
//	{
//		glFrustumf(xmin, xmax, ymin, ymax, znear, zfar);
//	}
//	else 
//	{
//		glOrthof(xmin, xmax, ymin, ymax, znear, zfar);
//	}
//#else
//	if (!ortho)
//	{
//		glFrustum(xmin, xmax, ymin, ymax, znear, zfar);        
//    }
//	else 
//	{
//		glOrtho(xmin, xmax, ymin, ymax, znear, zfar);
//	}
//#endif
}
Beispiel #3
0
const Matrix4 &Camera::GetUniformProjModelMatrix()
{
    if (flags & REQUIRE_REBUILD)
    {
        RebuildCameraFromValues();
    }
    if (flags & REQUIRE_REBUILD_PROJECTION)
    {
        RecalcFrustum();
    }
    if (flags & REQUIRE_REBUILD_MODEL)
    {
        RecalcTransform();
    }
    if (flags & REQUIRE_REBUILD_UNIFORM_PROJ_MODEL)
    {
        uniformProjModelMatrix = modelMatrix * projMatrix;
        flags &= ~REQUIRE_REBUILD_UNIFORM_PROJ_MODEL;
    }
    
    return uniformProjModelMatrix;
}