/// <summary> /// /// </summary> /// <param name="handle"></param> /// <param name="fullScreen"></param> /// <param name="doubleBuffer"></param> /// <returns></returns> public IGraphicsSurface CreatePrimarySurface(IntPtr handle, Boolean fullScreen, Boolean doubleBuffer) { DDSURFACEDESC2 tempDescr = new DDSURFACEDESC2(); tempDescr.lFlags = CONST_DDSURFACEDESCFLAGS.DDSD_CAPS; tempDescr.ddsCaps.lCaps = CONST_DDSURFACECAPSFLAGS.DDSCAPS_PRIMARYSURFACE; if (doubleBuffer) { tempDescr.lFlags |= CONST_DDSURFACEDESCFLAGS.DDSD_BACKBUFFERCOUNT; tempDescr.lBackBufferCount = 1; tempDescr.ddsCaps.lCaps |= CONST_DDSURFACECAPSFLAGS.DDSCAPS_COMPLEX | CONST_DDSURFACECAPSFLAGS.DDSCAPS_FLIP; } DirectDrawSurface surface = new DirectDrawSurface(tempDescr); if (fullScreen) { return(surface); } DirectDrawClipper clipper = DirectDraw.CreateClipper(0); clipper.SetHWnd(handle.ToInt32()); surface.Surface.SetClipper(clipper); return(surface); }
public WindowedDirectDraw(Control control) { primary = createPrimarySurface(); // attach window clipper DirectDrawClipper cp = handle.CreateClipper(0); cp.SetHWnd(control.Handle.ToInt32()); primary.handle.SetClipper(cp); primary.clipRect = new Rectangle(int.MinValue / 2, int.MinValue / 2, int.MaxValue, int.MaxValue); }
internal void SetClipper(DirectDrawClipper clipper) { _surface.SetClipper(clipper); }