コード例 #1
0
        public MDX1_Surface()
        {
            mDisplay = Display.Impl as MDX1_Display;
            mDevice  = mDisplay.D3D_Device;

            InitVerts();
        }
コード例 #2
0
        public MDX1_Surface(Size size)
        {
            mSrcRect = new Rectangle(new Point(0, 0), size);

            mDisplay = Display.Impl as MDX1_Display;
            mDevice  = mDisplay.D3D_Device;

            /*
             * Bitmap bitmap = new Bitmap(size.Width, size.Height);
             * Graphics g = Graphics.FromImage(bitmap);
             * g.Clear(Color.FromArgb(0, 0, 0, 0));
             * g.Dispose();
             */
            //mTexture = Texture.FromBitmap(mDevice, bitmap, Usage.None, Pool.Managed);
            mTexture = new Ref <Texture>(new Texture(mDevice.Device, size.Width, size.Height, 1, Usage.None,
                                                     Format.A8R8G8B8, Pool.Managed));

            mRenderToSurface = new RenderToSurface(mDevice.Device, size.Width, size.Height,
                                                   Format.A8R8G8B8, true, DepthFormat.D16);

            mRenderToSurface.BeginScene(mTexture.Value.GetSurfaceLevel(0));
            mDevice.Clear(ClearFlags.Target, Color.FromArgb(0, 0, 0, 0).ToArgb(), 1.0f, 0);
            mRenderToSurface.EndScene(Filter.None);

            mRenderToSurface.Dispose();
            mRenderToSurface = null;

            mTextureSize = mSrcRect.Size;

            InitVerts();
        }
コード例 #3
0
        internal void Initialize(MDX1_DisplayWindow window)
        {
            if (mInitialized)
            {
                return;
            }

            if (window.RenderTarget.TopLevelControl == null)
            {
                throw new ArgumentException("The specified render target does not have a Form object yet.  " +
                                            "It's TopLevelControl property is null.  You may not create DisplayWindow objects before " +
                                            "the control to render to is added to the Form.");
            }

            mInitialized = true;

            // ok, create D3D device
            PresentParameters present = CreateWindowedPresentParameters(window, 0, 0);

            present.BackBufferWidth  = 1;
            present.BackBufferHeight = 1;

            DeviceType dtype = DeviceType.Hardware;

            int adapterOrdinal = Direct3D.Manager.Adapters.Default.Adapter;

            Direct3D.Caps        caps  = Direct3D.Manager.GetDeviceCaps(adapterOrdinal, Direct3D.DeviceType.Hardware);
            Direct3D.CreateFlags flags = Direct3D.CreateFlags.SoftwareVertexProcessing;

            // Is there support for hardware vertex processing? If so, replace
            // software vertex processing.
            if (caps.DeviceCaps.SupportsHardwareTransformAndLight)
            {
                flags = Direct3D.CreateFlags.HardwareVertexProcessing;
            }

            // Does the device support a pure device?
            if (caps.DeviceCaps.SupportsPureDevice)
            {
                flags |= Direct3D.CreateFlags.PureDevice;
            }

            Device device = new Device
                                (0, dtype, window.RenderTarget.TopLevelControl.Handle,
                                flags, present);

            device.DeviceLost  += new EventHandler(mDevice_DeviceLost);
            device.DeviceReset += new EventHandler(mDevice_DeviceReset);

            mDevice = new D3DDevice(device);

            // create primitive objects
            mLine = new Direct3D.Line(device);

            //CreateSurfaceVB();
        }
コード例 #4
0
        public MDX1_Surface(Ref <Texture> texture, Rectangle sourceRect)
        {
            mSrcRect = sourceRect;

            mDisplay = Display.Impl as MDX1_Display;
            mDevice  = mDisplay.D3D_Device;

            mTexture = new Ref <Texture>(texture);

            mTextureSize = new Size(mTexture.Value.GetSurfaceLevel(0).Description.Width,
                                    mTexture.Value.GetSurfaceLevel(0).Description.Height);

            InitVerts();
        }
コード例 #5
0
        public MDX1_Surface(Stream stream)
        {
            mDisplay = Display.Impl as MDX1_Display;
            mDevice  = mDisplay.D3D_Device;

            if (mDevice == null)
            {
                throw new Exception("Error: It appears that AgateLib has not been initialized yet.  Have you created a DisplayWindow?");
            }

            LoadFromStream(stream);

            InitVerts();
        }
コード例 #6
0
        public MDX1_Surface(string fileName)
        {
            mFileName = fileName;

            mDisplay = Display.Impl as MDX1_Display;
            mDevice  = mDisplay.D3D_Device;

            if (mDevice == null)
            {
                throw new Exception("Error: It appears that AgateLib has not been initialized yet.  Have you created a DisplayWindow?");
            }

            LoadFromFile();

            mDevice.Device.DeviceReset += new EventHandler(mDevice_DeviceReset);

            InitVerts();
        }
コード例 #7
0
        public DrawBuffer(D3DDevice device)
        {
            mDevice = device;

            AllocateVerts();
        }