Example #1
0
        protected override void _Render(DXCamera camera)
        {
            EffectTechnique technique = _shader.DXEffect.GetTechniqueByIndex(0);
            EffectPass      usePass   = technique.GetPassByIndex(0);

            for (int i = 0; i < 5; i++)
            {
                if (_vertexBuffer2[i] != null && Program.DXSceneOptions.LevelVisibility[i])
                {
                    DXContext.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(_vertexBuffer2[i], Marshal.SizeOf(typeof(DXSKV)), 0));
                    DXContext.InputAssembler.SetIndexBuffer(_indexBuffer2[i], Format.R32_UInt, 0);
                    DXContext.InputAssembler.PrimitiveTopology = PrimitiveTopology.LineList;
                    DXContext.InputAssembler.InputLayout       = _inputLayout;

                    _shader.SetParameter("worldMatrix", Matrix.Identity);
                    _shader.SetParameter("viewMatrix", camera.ViewMatrix);
                    _shader.SetParameter("projectionMatrix", camera.ProjMatrix);
                    _shader.SetParameter("vp", camera.ViewMatrix * camera.ProjMatrix);

                    usePass.Apply(DXContext);

                    DXContext.DrawIndexed(IndexCount2[i], 0, 0);
                }
            }



            technique.Dispose();
            usePass.Dispose();
        }
Example #2
0
 public void Render(DXCamera camera)
 {
     if (Visible)
     {
         _Render(camera);
     }
 }
Example #3
0
        public void Initialize(int viewWidth, int viewHeight, IntPtr handle, Form form, DXConfigClass DXConfig)
        {
            DestroyAllResources();

            _D3D = new D3DClass();
            _D3D.Initialize(viewWidth, viewHeight, handle, form, DXConfig);
            Camera          = new DXPerspectiveCamera(_config.FOV, (float)viewWidth, (float)viewHeight, _config.ScreenNear, _config.ScreenDepth);
            CameraControler = new DXOrbitControler(Camera, (form as ArbaroMainForm).renderCtrl);
            //CameraControler = new DXArcballControler(Camera, (form as ArbaroMainForm).renderCtrl);
        }
Example #4
0
        //
        // ctrl is the windows control hooked for events (mouse & keyboard)
        //

        public DXBaseCameraControler(DXCamera camera, Control ctrl)
        {
            _Ctrl            = ctrl;
            ctrl.MouseDown  += ctrl_MouseDown;
            ctrl.MouseMove  += ctrl_MouseMove;
            ctrl.MouseUp    += ctrl_MouseUp;
            ctrl.MouseWheel += ctrl_MouseWheel;
            ctrl.KeyDown    += ctrl_KeyDown;

            _MouseX = 0; _MouseY = 0;

            _camera = camera;
        }
Example #5
0
        static void MoveCamera(ref DXCamera camera, float deltaTime)
        {
            float sprintMod = 0.5f;

            if (DXInput.IsKeyPressed(16))
            {
                sprintMod = 4.0f;
            }
            float moveSpeed = 2.0f * sprintMod;
            float rotSpeed  = 2.0f;

            if (DXInput.IsKeyPressed('A'))
            {
                camera.Translate(new DXVector(-moveSpeed * deltaTime, 0, 0, 1));
            }
            else if (DXInput.IsKeyPressed('D'))
            {
                camera.Translate(new DXVector(moveSpeed * deltaTime, 0, 0, 1));
            }

            if (DXInput.IsKeyPressed('W'))
            {
                camera.Translate(new DXVector(0, 0, moveSpeed * deltaTime, 1));
            }
            else if (DXInput.IsKeyPressed('S'))
            {
                camera.Translate(new DXVector(0, 0, -moveSpeed * deltaTime, 1));
            }

            if (DXInput.IsKeyPressed(37))
            {
                camera.Rotate(new DXVector(0, -rotSpeed * deltaTime, 0, 0));
            }
            else if (DXInput.IsKeyPressed(39))
            {
                camera.Rotate(new DXVector(0, rotSpeed * deltaTime, 0, 0));
            }

            if (DXInput.IsKeyPressed(38))
            {
                camera.Rotate(new DXVector(-rotSpeed * deltaTime, 0, 0, 0));
            }
            else if (DXInput.IsKeyPressed(40))
            {
                camera.Rotate(new DXVector(rotSpeed * deltaTime, 0, 0, 0));
            }
            camera.Update();
        }
Example #6
0
 // ctrl is the control hooked for events (mouse & keyboard)
 public DXOrbitControler(DXCamera camera, Control ctrl)
     : base(camera, ctrl)
 {
 }
Example #7
0
        static void Main(string[] args)
        {
            DXWindow           window           = new DXWindow();
            DXRenderingManager renderingManager = new DXRenderingManager();

            DXCamera camera = new DXCamera();

            DXDeltaTime deltaTimer = new DXDeltaTime();

            window.Create(Process.GetCurrentProcess(),
                          "Test",
                          1280,
                          720,
                          false);

            renderingManager.Init(window);

            DXStaticMesh cubeMesh = new DXStaticMesh();

            DXTexture texture      = new DXTexture();
            DXTexture normal       = new DXTexture();
            DXTexture metallic     = new DXTexture();
            DXTexture displacement = new DXTexture();

            DXDrawable drawable = new DXDrawable();

            DXDirectionalLight directionalLight = new DXDirectionalLight(renderingManager, window);

            directionalLight.Init();


            directionalLight.Intensity = 10;
            directionalLight.SetDirection(new DXVector(0, -1, -1, 0));
            directionalLight.Update();

            bool loadSucceeded = true;

            if (cubeMesh.Init())
            {
                if (cubeMesh.LoadStaticMesh("../../Models/Cube.fbx"))
                {
                    if (!cubeMesh.CreateBuffer(renderingManager))
                    {
                        loadSucceeded = false;
                    }
                }
            }

            if (!texture.LoadDDSTexture("../../Texture/Brick/Brick_diffuse.DDS", true, renderingManager))
            {
                loadSucceeded = false;
            }
            if (!normal.LoadDDSTexture("../../Texture/Brick/Brick_normal.DDS", true, renderingManager))
            {
                loadSucceeded = false;
            }
            if (!metallic.LoadDDSTexture("../../Texture/Brick/Brick_metallic.DDS", true, renderingManager))
            {
                loadSucceeded = false;
            }
            if (!displacement.LoadDDSTexture("../../Texture/Brick/Brick_height.DDS", true, renderingManager))
            {
                loadSucceeded = false;
            }

            drawable.SetStaticMesh(cubeMesh);
            drawable.SetTexture(texture);
            drawable.SetNormalMap(normal);
            drawable.SetMetallicMap(metallic);
            drawable.SetDisplacementMap(displacement);
            drawable.SetPosition(new DXVector(0, 0, -5, 1));
            drawable.Update();

            camera.SetPosition(new DXVector(0, 0, 0, 1));
            camera.SetDirection(new DXVector(0, 0, -1, 0));
            camera.Update();

            deltaTimer.Init();
            while (window.IsOpen && loadSucceeded)
            {
                float deltaTime = deltaTimer.GetDeltaTime();
                if (window.Updating())
                {
                    //Window is updating
                }

                MoveCamera(ref camera, deltaTime);

                if (DXInput.IsKeyPressed('Q'))
                {
                    directionalLight.Queue();
                }

                drawable.Draw(renderingManager);
                renderingManager.Flush(camera);
            }
            texture.Release();
            normal.Release();
            metallic.Release();
            displacement.Release();
            cubeMesh.Release();

            directionalLight.Release();


            renderingManager.Release();
        }
Example #8
0
 protected abstract void _Render(DXCamera camera);