示例#1
0
文件: disp.cpp 项目: Plombo/dega
// Create the buffer surface
static int MakeBufferSurface()
{
  int Ret=0;
  int UseSys=0;
  DDSURFACEDESC ddsd;
  UseSys=AutodetectUseSys(pDD);
  DispBuff=NULL;
  memset(&ddsd,0,sizeof(ddsd));
  ddsd.dwSize=sizeof(ddsd);
  ddsd.dwFlags=DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT;
  ddsd.dwWidth=ScrnWidth;
  ddsd.dwHeight=ScrnHeight;
TryAgain:
  ddsd.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN;
  if (UseSys) ddsd.ddsCaps.dwCaps|=DDSCAPS_SYSTEMMEMORY;
  else         ddsd.ddsCaps.dwCaps|=DDSCAPS_VIDEOMEMORY;
  Ret=pDD->CreateSurface(&ddsd,&DispBuff,NULL);
  if (Ret<0 && UseSys!=1) { UseSys=1; goto TryAgain; } // Try again in system memory
  if (Ret<0) return 1; if (DispBuff==NULL) return 1; 

  // Find out the color depth
  GetSurfaceFormat(DispBuff,&DispFormat,&DispBpp);

  // Clear it
  SurfaceClear(DispBuff,0);
  return 0;
}
示例#2
0
// Create a secondary DD surface for the screen
static int BlitFXMakeSurf()
{
	int nRet;
	DDSURFACEDESC2 ddsd;

	if (BlitFXDD == NULL) {
		return 1;
	}

	nUseSys = nVidTransferMethod;
	if (nUseSys < 0) {
		nUseSys = AutodetectUseSys();
	}

	nDirectAccess = 0;
	if (nUseSys == 0 && nUseBlitter != 0) {
		nDirectAccess = (nVidBlitterOpt[nVidSelect] >> 9) & 1 ^ 1;
	}