Exemplo n.º 1
0
        private static void OnTick(object sender, TickEventArgs e)
        {
            WindowSurface.Fill(Color.CornflowerBlue);
            Rectangle.Fill(Color.Red);

            WindowSurface.Lock();
            WindowSurface.Blit(Rectangle, RectangleLocation);
            WindowSurface.Unlock();

            WindowSurface.Update();
        }
Exemplo n.º 2
0
        // Methods
        #region Public Methods

        public void Initialize(WindowSurface window)
        {
            if (Initialized)
            {
                return;
            }

            Window = window;

            try
            {
                _presentParameters                    = new PresentParameters();
                _presentParameters.Windowed           = true;
                _presentParameters.SwapEffect         = SwapEffect.Discard;
                _presentParameters.BackBufferCount    = 1;
                _presentParameters.BackBufferWidth    = window.Width;
                _presentParameters.BackBufferHeight   = window.Height;
                _presentParameters.BackBufferFormat   = Format.X8R8G8B8;
                _presentParameters.DeviceWindowHandle = window.Handle;

                _device = new Device(Manager.Adapters.Default.Adapter,
                                     DeviceType.Hardware,
                                     Window.Handle,
                                     CreateFlags.HardwareVertexProcessing,
                                     _presentParameters);

                //_device.RenderState.AlphaBlendEnable = true;
                //_device.RenderState.IndexedVertexBlendEnable = true;
                //_device.RenderState.AlphaSourceBlend = Blend.SourceAlpha;
                //_device.RenderState.SourceBlend = Blend.SourceAlpha;
                //_device.RenderState.AlphaFunction = Compare.Always;
                //_device.RenderState.DestinationBlend = Blend.SourceAlpha;
                //_device.RenderState.AlphaFunction = BlendFunction.Add;

                _device.RenderState.AlphaBlendEnable      = true;
                _device.RenderState.AlphaTestEnable       = true;
                _device.RenderState.SourceBlend           = Blend.SourceAlpha;
                _device.RenderState.DestinationBlend      = Blend.InvSourceAlpha;
                _device.RenderState.BlendOperation        = BlendOperation.Add;
                _device.RenderState.AlphaSourceBlend      = Blend.Zero;
                _device.RenderState.AlphaDestinationBlend = Blend.Zero;
                _device.RenderState.AlphaBlendOperation   = BlendOperation.Add;

                _device.RenderState.AlphaFunction = Compare.Always;
                _device.RenderState.VertexBlend   = VertexBlend.ZeroWeights;

                _device.SetRenderState(RenderStates.ZEnable, false);
                _device.SetRenderState(RenderStates.Lighting, false);
                _device.VertexFormat = CustomVertex.TransformedColored.Format;

                _device.DeviceLost  += new EventHandler(OnDeviceLost);
                _device.DeviceReset += new EventHandler(OnResetDevice);

                Gemoetry = new GemoetryRenderer(this);

                Core.Components.Require <GameLoop>().Subscribe(this);

                Initialized = true;
            }
            catch (Direct3DXException ex)
            {
                MessageBox.Show(string.Format("{0}{1} (0x{2:X})", ERR_D3D_INITIALIZE, ex.ErrorString, ex.ErrorCode),
                                "GraphicsDevice::Initialize", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (DirectXException ex)
            {
                MessageBox.Show(string.Format("{0}{1} (0x{2:X})", ERR_D3D_INITIALIZE, ex.ErrorString, ex.ErrorCode),
                                "GraphicsDevice::Initialize", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ERR_D3D_INITIALIZE + ex.Message,
                                "GraphicsDevice::Initialize", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }