Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 internal void SetClipper(DirectDrawClipper clipper)
 {
     _surface.SetClipper(clipper);
 }