예제 #1
0
        public void DisplayLevel(int level)
        {
            int     characterStart   = 30;
            int     characterSpacing = 15;
            Vector3 displayPosition  =
                new Vector3((float)this.Width / 2 - characterStart, (float)this.Height / 2, 0f);
            int         digit;
            NixieSprite nixie = new NixieSprite(nixiesTileSet);

            //Render the level indicator
            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
            device.BeginScene();
            using (D3D.Sprite d3dSprite = new D3D.Sprite(device)) {
                d3dSprite.Begin(D3D.SpriteFlags.AlphaBlend);

                //Show the letter L
                nixie.Draw(d3dSprite, NixieSprite.NixieCharacters.L, displayPosition);

                //Show the letter E
                displayPosition.X -= characterSpacing;
                nixie.Draw(d3dSprite, NixieSprite.NixieCharacters.E, displayPosition);

                //Show the letter V
                displayPosition.X -= characterSpacing;
                nixie.Draw(d3dSprite, NixieSprite.NixieCharacters.V, displayPosition);

                //Show the letter E
                displayPosition.X -= characterSpacing;
                nixie.Draw(d3dSprite, NixieSprite.NixieCharacters.E, displayPosition);

                //Show the letter L
                displayPosition.X -= characterSpacing;
                nixie.Draw(d3dSprite, NixieSprite.NixieCharacters.L, displayPosition);

                displayPosition.X = (float)this.Width / 2 + 40;
                for (int digitCount = 1; digitCount <= maxLevelDigits; digitCount++)
                {
                    digit  = level % 10;
                    level /= 10;
                    nixie.Draw(d3dSprite, (NixieSprite.NixieCharacters)digit, displayPosition);
                    displayPosition.X -= characterSpacing;
                }
                d3dSprite.End();
            }
            device.EndScene();
            device.Present();
            Thread.Sleep(3000); //wait for 3 seconds
        }
예제 #2
0
        public void RenderOnScreen(Microsoft.DirectX.Direct3D.Device d3dDevice, float elapsedTime)
        {
            d3dDevice.BeginScene();

            //Cargamos para renderizar el unico modelo que tenemos, un Quad que ocupa toda la pantalla, con la textura de todo lo dibujado antes
            d3dDevice.VertexFormat = CustomVertex.PositionTextured.Format;
            d3dDevice.SetStreamSource(0, screenQuadVB, 0);

            //Ver si el efecto de alarma esta activado, configurar Technique del shader segun corresponda

            //Cargamos parametros en el shader de Post-Procesado
            this.postProcessMerge.SetValue("escenaTextura", this.escena);
            if (cant_pasadas == 0)
            {
                this.postProcessMerge.SetValue("propulsoresTextura", this.propulsores);
            }
            else
            {
                this.postProcessMerge.SetValue("propulsoresTextura", this.propulsoresBlurAux2);
            }
            this.postProcessMerge.Technique = "TechniqueMerge";
            //Limiamos la pantalla y ejecutamos el render del shader
            d3dDevice.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
            this.postProcessMerge.Begin(FX.None);
            this.postProcessMerge.BeginPass(0);
            d3dDevice.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
            this.postProcessMerge.EndPass();
            this.postProcessMerge.End();
            //DrawText.drawText("Desfase: " + TGCVector3.PrintVector3(desfase), 0, 500, Color.White);
            //Terminamos el renderizado de la escena
            RenderFPS();
            RenderAxis();
            d3dDevice.EndScene();
            d3dDevice.Present();
        }
예제 #3
0
파일: DX2D.cs 프로젝트: Deleeete/Gleee
 /// <summary>
 /// 将在Render中准备好的内容绘制到viewport。旧的内容不会被自动清理
 /// </summary>
 public static void Present()
 {
     Device.BeginScene();
     Render.Invoke();
     Device.EndScene();
     Device.Present();
 }
예제 #4
0
파일: DX2D.cs 프로젝트: Deleeete/Gleee
 /// <summary>
 /// 用单一颜色覆盖整个viewport
 /// </summary>
 /// <param name="color">指定的颜色</param>
 public static void ClearDevice(Color color)
 {
     Device.BeginScene();
     Device.Clear(ClearFlags.Target, color, 1f, 0);
     Device.EndScene();
     Device.Present();
 }
예제 #5
0
파일: Game.cs 프로젝트: Emtey/myProjects
        public static void Render()
        {
            if (!dGDevice.Disposed)
            {
                dGDevice.Clear(ClearFlags.Target, System.Drawing.Color.Black, 1.0f, 0);
                dGDevice.BeginScene();

                m_ZOrderedSprites.Sort(Sprite.ComparisonZOrder);
                foreach (Sprite s in m_ZOrderedSprites)
                {
                    s.Render();
                }
                foreach (Text2D t in m_Text2Ds)
                {
                    t.Render();
                }

                dGDevice.EndScene();
                dGDevice.Present();
            }
            else
            {
                Quit();
            }
        }
예제 #6
0
        void Render()
        {
            m_d3DDevice.BeginScene();

            // Render target needs to be set to 640x360 for optimal scaling. However the pixel coordinates for
            // Direct3D 9 render target is actually (-0.5,-0.5) to (639.5,359.5).  As such the Viewport is set
            // to 639x359 to account for the pixel coordinate offset of render target
            tagRECT rect;

            rect.top    = m_d3DDevice.Viewport.Y;
            rect.left   = m_d3DDevice.Viewport.X;
            rect.bottom = m_d3DDevice.Viewport.Y + m_d3DDevice.Viewport.Height;
            rect.right  = m_d3DDevice.Viewport.X + m_d3DDevice.Viewport.Width;

            m_previewHelper.Render(rect);

            // Draw the timecode top-center with a slight drop-shadow
            Rectangle rc = m_d3DFont.MeasureString(null, m_timeCodeString, Direct3D.DrawTextFormat.Center, Color.Black);
            int       x  = (m_d3DDevice.Viewport.Width / 2) - (rc.Width / 2);
            int       y  = 10;

            m_d3DFont.DrawText(null, m_timeCodeString, x + 1, y + 1, Color.Black);
            m_d3DFont.DrawText(null, m_timeCodeString, x, y, Color.White);

            m_d3DDevice.EndScene();
            m_d3DDevice.Present();
        }
예제 #7
0
파일: UI.cs 프로젝트: KeiPG/rubixs
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            ReadMouse();
            ReadKeyboard();
            d3ddevice.Clear(ClearFlags.Target | ClearFlags.ZBuffer, System.Drawing.Color.Cyan, 1.0f, 0);
            //theta += Geometry.DegreeToRadian(1);

            d3ddevice.BeginScene();
            d3ddevice.Transform.World = Matrix.Translation(-spacing - .5f, -spacing - .5f, -spacing - .5f);
            for (int x = 0; x < 3; x++)
            {
                for (int y = 0; y < 3; y++)
                {
                    for (int z = 0; z < 3; z++)
                    {
                        rubixCube.GetBlock(x, y, z).draw(x * spacing, y * spacing, z * spacing);
                    }
                }
            }

            d3ddevice.EndScene();

            PositionCamera();
            d3ddevice.Present();
            this.Invalidate();
        }
예제 #8
0
파일: DX2D.cs 프로젝트: Deleeete/Gleee
 /// <summary>
 /// 使用指定颜色清理viewport,然后绘制在Render中准备好的内容
 /// </summary>
 public static void Present(Color color)
 {
     Device.BeginScene();
     Device.Clear(ClearFlags.Target, color, 1f, 0);
     Render.Invoke();
     Device.EndScene();
     Device.Present();
 }
예제 #9
0
        private void MainForm_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            try
            {
                if (dxEnable)
                {
                    device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
                    device.BeginScene();

                    obj.Draw(device, worldMatrix);
                    device.Transform.World = worldMatrix;
                    LineTo(ref device, new Vector3(0, 0, -1), new Vector3(0, 0, 1), Color.Blue);
                    LineTo(ref device, new Vector3(1, 0, -1), new Vector3(1, 0, 1), Color.Blue);
                    LineTo(ref device, new Vector3(-1, 0, -1), new Vector3(-1, 0, 1), Color.Blue);
                    LineTo(ref device, new Vector3(0.5f, 0, -1), new Vector3(0.5f, 0, 1), Color.Blue);
                    LineTo(ref device, new Vector3(-0.5f, 0, -1), new Vector3(-0.5f, 0, 1), Color.Blue);

                    LineTo(ref device, new Vector3(0, -1, 0), new Vector3(0, 1, 0), Color.Red);
                    LineTo(ref device, new Vector3(-1, 0, 0), new Vector3(1, 0, 0), Color.Blue);
                    LineTo(ref device, new Vector3(-1, 0, 1), new Vector3(1, 0, 1), Color.Blue);
                    LineTo(ref device, new Vector3(-1, 0, 0.5f), new Vector3(1, 0, 0.5f), Color.Blue);
                    LineTo(ref device, new Vector3(-1, 0, -1), new Vector3(1, 0, -1), Color.Blue);
                    LineTo(ref device, new Vector3(-1, 0, -0.5f), new Vector3(1, 0, -0.5f), Color.Blue);

                    device.EndScene();
                    device.Present();
                    this.Invalidate();

                    if (bDrawObj)
                    {
                        obj.Step();
                        toolform.label6.Text  = "" + obj.PotentialEnergy;
                        toolform.label14.Text = "" + (obj.PotentialEnergy + obj.KineticEnergyW);
                        toolform.label13.Text = "" + obj.KineticEnergyW;
                    }



                    ReadKeyboard();
                    UpdateInputState();
                }
                if (bResized)
                {
                    bResized = false;
                    dxEnable = false;
                    InitializeDevice();
                    InitializeLights();
                    InitializeCamera();
                    InitializeObjects();
                    dxEnable = true;
                }
            }
            catch (Exception er)
            {
                MessageBox.Show(er.Message);
            }
        }
예제 #10
0
 public void Render()
 {
     device.Clear(ClearFlags.Target, Color.DarkSlateGray, 1, 0);
     device.BeginScene();
     device.VertexFormat = CustomVertex.PositionNormalColored.Format;
     device.DrawUserPrimitives(PrimitiveType.TriangleList, vertex.Length / 3, vertex);
     device.EndScene();
     device.Present();
 }
예제 #11
0
파일: Form1.cs 프로젝트: jaisal1311/GP
 private void Form1_Paint(object sender, PaintEventArgs e)
 {
     device.Clear(ClearFlags.Target, Color.Chartreuse, 1, 0);
     device.BeginScene();
     device.SetTexture(0, texture);
     device.VertexFormat = CustomVertex.PositionTextured.Format;
     device.DrawUserPrimitives(PrimitiveType.TriangleList, vertex.Length / 3, vertex);
     device.EndScene();
     device.Present();
 }
예제 #12
0
파일: DX2D.cs 프로젝트: Deleeete/Gleee
 /// <summary>
 /// 绘制在Render中准备好的内容
 /// </summary>
 /// <param name="auto_clear">绘制之前是否用黑色清理整个viewport</param>
 public static void Present(bool auto_clear)
 {
     Device.BeginScene();
     if (auto_clear)
     {
         Device.Clear(ClearFlags.Target, Color.Black, 1f, 0);
     }
     Render.Invoke();
     Device.EndScene();
     Device.Present();
 }
예제 #13
0
파일: Form1.cs 프로젝트: OmaraliA/Portfolio
        private void Form1_MouseClick_1(object sender, MouseEventArgs e)
        {
            device.Clear(ClearFlags.Target, Color.CornflowerBlue, 0, 1);
            device.BeginScene();
            using (Sprite s = new Sprite(device))
            {
                s.Begin(SpriteFlags.AlphaBlend);
                s.Draw2D(texture_blood, new Rectangle(0, 0, 200, 200), new Rectangle(0, 0, 0, 0), new Point(0, 0), 0f, new Point(e.X - 100, e.Y - 100), Color.White);
                s.End();
            }
            device.EndScene();
            device.Present();
            int toDel = -1;

            for (int i = 0; i < ch.Count; i++)
            {
                Characters cat = ch[i];
                if ((e.X >= cat.CharacterCoordinates.X && e.X <= cat.CharacterCoordinates.X + 150) &&
                    (e.Y >= cat.CharacterCoordinates.Y && e.Y <= cat.CharacterCoordinates.Y + 150))
                {
                    using (soundPlayer4 = new SoundPlayer(@"C:\Users\андрей\Documents\Visual Studio 2015\Projects\NewGame\NewGame\bin\Debug\Gun.wav"))
                    {
                        soundPlayer4.Play();
                    }
                    toDel = i;
                    newHit();
                    newScore(50);
                    break;
                }
                if (hits % 5 == 0)
                {
                    // newLevel(1);
                }
            }

            if (toDel != -1)
            {
                ch.Remove(ch[toDel]);
            }
        }
예제 #14
0
        public virtual void Render()
        {
            renderDevice.Clear(ClearFlags.Target, Color.Black, 1.0F, 0);
            renderDevice.BeginScene();

            foreach (GameEntity entity in entities)
            {
                entity.Render();
            }

            renderDevice.EndScene();
            renderDevice.Present(renderSurface);
        }
예제 #15
0
        public void render_window(double dt)
        {
            if (m_D3DDevice == null)
            {
                return;
            }

            m_D3DDevice.BeginScene();

            Root.instance().scene_director().draw_scene(dt);

            m_D3DDevice.EndScene();
            m_D3DDevice.Present();
        }
예제 #16
0
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            device.Clear(ClearFlags.Target, Color.Navy, 1.0f, 0);
            device.BeginScene();

            device.VertexFormat    = CustomVertex.PositionColored.Format;
            device.Transform.World = Matrix.Translation(MyMaticeX, MyMaticeY, MyMaticeZ);
            device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertices);

            device.EndScene();
            device.Present();
            this.Invalidate();

            ReadKeyboard();
        }
예제 #17
0
        } //take any texture image as bg.

        private void Render()
        {
            device.Clear(ClearFlags.Target, Color.CornflowerBlue, 0, 1);
            device.BeginScene();
            using (Sprite s = new Sprite(device))
            {
                s.Begin(SpriteFlags.AlphaBlend);
                s.Draw2D(texture, new Rectangle(0, 0, 0, 0), new Rectangle(0, 0,
                                                                           device.Viewport.Width, device.Viewport.Height), new Point(0, 0), 0f, new
                         Point(0, 0), Color.DarkSlateGray);
                font.DrawText(s, "TYCS-6070", new Point(0, 0), Color.White);
                s.End();
            }
            device.EndScene();
            device.Present();
        }
예제 #18
0
        void Render()
        {
            m_d3DDevice.BeginScene();

            tagRECT rect;

            rect.top    = m_d3DDevice.Viewport.Y;
            rect.left   = m_d3DDevice.Viewport.X;
            rect.bottom = m_d3DDevice.Viewport.Y + m_d3DDevice.Viewport.Height;
            rect.right  = m_d3DDevice.Viewport.X + m_d3DDevice.Viewport.Width;

            m_previewHelper.Render(rect);

            m_d3DDevice.EndScene();
            m_d3DDevice.Present();
        }
예제 #19
0
        /// <summary>
        /// 绘制屏幕
        /// </summary>
        public void Render()
        {
            if (d3dDevice == null)
            {
                return;
            }

            d3dDevice.Clear(ClearFlags.Target, Color.YellowGreen, 1f, 0);

            //当前场景绘制
            if (currentScene != null)
            {
                currentScene.Draw();
            }

            d3dDevice.Present();
        }
예제 #20
0
        public void Render()
        {
            if (DXDevice == null)
            {
                return;
            }

            DXDevice.Clear(Direct3D.ClearFlags.Target, Color.Gray, 1, 0);
            DXDevice.BeginScene();
            DXDevice.VertexFormat = Direct3D.CustomVertex.PositionColored.Format;
            DXDevice.SetStreamSource(0, vb, 0);
            DXDevice.Indices         = ib;
            DXDevice.Transform.World = Matrix.RotationY(angle);
            DXDevice.DrawIndexedPrimitives(Direct3D.PrimitiveType.TriangleList, 0, 0, vertices.Length, 0, indexes.Length / 3);
            DXDevice.EndScene();
            DXDevice.Present();
            angle += 0.02f;
        }
예제 #21
0
        private void Render()
        {
            CustomVertex.TransformedColored[] vertexes = new CustomVertex.TransformedColored[3];
            vertexes[0].Position = new Vector4(240, 110, 0, 1.0f);  //first point
            vertexes[0].Color    = System.Drawing.Color.FromArgb(0, 255, 0).ToArgb();

            vertexes[1].Position = new Vector4(380, 420, 0, 1.0f);  //second point
            vertexes[1].Color    = System.Drawing.Color.FromArgb(0, 0, 255).ToArgb();

            vertexes[2].Position = new Vector4(110, 420, 0, 1.0f);  //third point
            vertexes[2].Color    = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
            device.Clear(ClearFlags.Target, Color.CornflowerBlue, 1.0f, 0);
            device.BeginScene();

            device.VertexFormat = CustomVertex.TransformedColored.Format;
            device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertexes);
            device.EndScene();
            device.Present();
        }
예제 #22
0
        /// <summary>
        /// Present to the screen.
        /// </summary>
        /// <returns>true if successful, false otherwise.</returns>
        public bool Present()
        {
            if (device == null)
            {
                return(false);
            }

            try
            {
                device.Present();
            }
            catch (Exception)
            {
                DialogResult r;
                r = MessageBox.Show("Failed to present.", "ManagedDirect3D::Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return(false);
            }

            return(true);
        }
예제 #23
0
        public bool Render()
        {
            if (p_D3DDevice == null)
            {
                return(false);
            }

            p_D3DDevice.Clear(ClearFlags.Target,
                              System.Drawing.Color.Black,
                              1.0f,
                              0);

            p_D3DDevice.BeginScene();

            DrawScene();

            p_D3DDevice.EndScene();
            p_D3DDevice.Present();

            return(true);
        }
예제 #24
0
        public void Render()
        {
            try
            {
                Microsoft.DirectX.Direct3D.Device device = GameAppFramework.GetGameAppFramework().Device;
                device.Clear(ClearFlags.Target, Color.HotPink, 0, 1);
                device.BeginScene();
                using (Sprite MenuSprite = new Sprite(device))
                {
                    MenuSprite.Begin(SpriteFlags.AlphaBlend);
                    MenuSprite.Draw2D(background, new Rectangle(0, 0, 0, 0), new Rectangle(0, 0, device.Viewport.Width, device.Viewport.Height), new Point(0, 0), 0f, new Point(0, 0), Color.White);
                    font.DrawText(MenuSprite, "Press Space to START", new Point((device.Viewport.Width / 2) - 200, device.Viewport.Height / 2), Color.White);
                    font.DrawText(MenuSprite, "Press Escape to END", new Point((device.Viewport.Width / 2) - 200, (device.Viewport.Height / 2) + 100), Color.White);
                    MenuSprite.End();
                }

                device.EndScene();
                device.Present();
            }
            catch (Exception e) { };
        }
예제 #25
0
        private void Render()
        {
            // check new settings
            LoadSettings();

            // print stats
            PrintStats();

            // check for camera movement
            HandleInput();

            // keep up the frame time
            Toolbox.FrameTime.NextFrame();

            // rotate the landscape
            angle += rotateSpeed * Toolbox.FrameTime.Time;

            // clear device
            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);

            // render scene
            device.BeginScene();

            device.Transform.World =
                Matrix.Translation(-SIZE / 2, 0, -SIZE / 2) * Matrix.RotationY(angle);

            int numSubSets = mesh.GetAttributeTable().Length;

            for (int i = 0; i < numSubSets; ++i)
            {
                mesh.DrawSubset(0);
            }

            device.EndScene();

            // show scene
            device.Present();

            this.Invalidate();
        }
예제 #26
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="waitForVSync"></param>
 public override void SwapBuffers(bool waitForVSync)
 {
     D3D.Device device = driver.Device;
     if (device != null)
     {
         int status;
         // tests coop level to make sure we are ok to render
         device.CheckCooperativeLevel(out status);
         if (status == (int)Microsoft.DirectX.Direct3D.ResultCode.Success)
         {
             // swap back buffer to the front
             if (isSwapChain)
             {
                 swapChain.Present();
             }
             else
             {
                 device.Present();
             }
         }
         else if (status == (int)Microsoft.DirectX.Direct3D.ResultCode.DeviceLost)
         {
             // Device is lost, and is not available for reset now
             log.Warn("Device State: DeviceLost");
             D3D9RenderSystem renderSystem = (D3D9RenderSystem)Root.Instance.RenderSystem;
             renderSystem.NotifyDeviceLost();
         }
         else if (status == (int)Microsoft.DirectX.Direct3D.ResultCode.DeviceNotReset)
         {
             // The device needs to be reset, and has not yet been reset.
             log.Warn("Device State: DeviceNotReset");
             device.Reset(device.PresentationParameters);
         }
         else
         {
             throw new Exception(string.Format("Unknown status code from CheckCooperativeLevel: {0}", status));
         }
     }
 }
예제 #27
0
        /// <summary>
        ///     Se toma todo lo dibujado antes, que se guardo en una textura, y se le aplica un shader para distorsionar la imagen
        /// </summary>
        private void drawPostProcess(Microsoft.DirectX.Direct3D.Device d3dDevice)
        {
            //Arrancamos la escena
            d3dDevice.BeginScene();

            //Cargamos para renderizar el unico modelo que tenemos, un Quad que ocupa toda la pantalla, con la textura de todo lo dibujado antes
            d3dDevice.VertexFormat = CustomVertex.PositionTextured.Format;
            d3dDevice.SetStreamSource(0, screenQuadVB, 0);

            //Ver si el efecto de oscurecer esta activado, configurar Technique del shader segun corresponda

            effect.Technique = "RainTechnique";

            if (!presentacion && lloviendo)
            {
                effect.Technique = "RainTechnique";
            }
            else
            {
                effect.Technique = "DefaultTechnique";
            }

            //Cargamos parametros en el shader de Post-Procesado
            effect.SetValue("render_target2D", renderTarget2D);
            effect.SetValue("textura_alarma", lluviaTexture.D3dTexture);
            effect.SetValue("time", this.ElapsedTime);

            //Limiamos la pantalla y ejecutamos el render del shader
            d3dDevice.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
            effect.Begin(FX.None);
            effect.BeginPass(0);
            d3dDevice.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
            effect.EndPass();
            effect.End();

            //Terminamos el renderizado de la escena
            d3dDevice.EndScene();
            d3dDevice.Present();
        }
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            deltaTime = hrt.ElapsedTime;
            ProcessInputState();
            UpdateSprite(deltaTime);
            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Blue, 1.0f, 0);
            device.BeginScene();
            using (Sprite sprite = new Sprite(device)) {
                sprite.Begin(SpriteFlags.None);
                //Set rotation center for sprite
                spriteCenter.X = spritePosition.X + tileSet.ExtentX;
                spriteCenter.Y = spritePosition.Y + tileSet.ExtentY;

                //Spin, Shift, Stretch :-)
                sprite.Transform = Matrix.RotationZ(angle) * Matrix.Translation(spriteCenter);
                sprite.Draw(tileSet.Texture, tilePosition, spriteCenter, spritePosition,
                            Color.FromArgb(255, 255, 255, 255));
                sprite.End();
            }
            device.EndScene();
            device.Present();
            this.Invalidate();
        }
예제 #29
0
        /// <summary>
        /// The render.
        /// </summary>
        /// <remarks></remarks>
        private void Render()
        {
            if (pause)
            {
                return;
            }

            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
            device.BeginScene();
            cam.move();

            SetupMatrices();

            device.Material = DefaultMaterial;

            device.Transform.World      = Matrix.Identity;
            device.RenderState.CullMode = Cull.Clockwise;

            // Raw.ParsedModel.DisplayedInfo.Draw(ref device, ref bsp.SkyBox);
            Material m = new Material();

            device.RenderState.CullMode = Cull.None;

            device.RenderState.FillMode         = FillMode.WireFrame;
            device.RenderState.AlphaBlendEnable = false;
            device.RenderState.AlphaTestEnable  = false;
            device.Material = DefaultMaterial;
            dxcoll.DrawMeshes(ref device);
            if (sphereDisplayAll)
            {
                device.Material = BlueMaterial;
                dxcoll.DrawSpheres(ref device);
                device.Transform.World = Matrix.Identity;
            }

            if (planeDisplayAll)
            {
                for (int i = 0; i < mList.Count; i++)
                {
                    m.Ambient       = Color.FromArgb(130, (24 - (i % 25)) * 10, i % 25 * 10);
                    m.Diffuse       = m.Ambient;
                    device.Material = m;

                    device.SetTexture(0, null);
                    device.RenderState.AlphaBlendEnable = true;
                    device.RenderState.AlphaTestEnable  = true;
                    device.RenderState.DestinationBlend = Blend.Zero;
                    device.RenderState.SourceBlend      = Blend.One;
                    device.RenderState.FillMode         = FillMode.Solid;
                    mList[i].DrawSubset(0);
                }

                // Draw normals
                device.SetStreamSource(0, Vb, 0);
                device.Transform.World = Matrix.Identity;
                device.VertexFormat    = CustomVertex.PositionColored.Format;
                device.DrawPrimitives(PrimitiveType.LineList, 0, normalVertices.Length / 2);
            }
            else
            {
                m.Ambient       = Color.Red;
                m.Diffuse       = Color.Red;
                device.Material = m;

                device.SetTexture(0, null);
                device.RenderState.AlphaBlendEnable = true;
                device.RenderState.AlphaTestEnable  = true;
                device.RenderState.DestinationBlend = Blend.Zero;
                device.RenderState.SourceBlend      = Blend.One;
                device.RenderState.FillMode         = FillMode.Solid;
                mList[planeDisplay].DrawSubset(0);

                // Draw normals
                device.SetStreamSource(0, Vb, 0);
                device.Transform.World = Matrix.Identity;
                device.VertexFormat    = CustomVertex.PositionColored.Format;

                int tpd  = planeDisplay;
                int mesh = 0;
                while (tpd >= coll.Meshes[mesh].SurfaceData.Length)
                {
                    tpd -= coll.Meshes[mesh++].SurfaceData.Length;
                }
                short s = (short)coll.Meshes[mesh].SurfaceData[tpd].Plane;
                if (s >= 0)
                {
                    device.DrawPrimitives(PrimitiveType.LineList, coll.Meshes[mesh].SurfaceData[tpd].Plane * 2, 1);
                }
            }

            device.EndScene();

            // Update the screen
            device.Present();
        }
예제 #30
0
파일: Form1.cs 프로젝트: jaisal1311/GP
 private void Render()
 {
     device.Clear(ClearFlags.Target, Color.Blue, 0, 1);
     device.Present();
 }