/// <summary>Create Renderer instance and compile shader's programs.</summary>
        /// <param name="directX3DGraphics">Inctance of <see cref="DirectX3DGraphics"/>.</param>
        public Renderer(DirectX3DGraphics directX3DGraphics)
        {
            _directX3DGraphics = directX3DGraphics;
            Device11      device        = _directX3DGraphics.Device;
            DeviceContext deviceContext = _directX3DGraphics.DeviceContext;

            // Compile Vertex and Pixel shaders
            CompilationResult vertexShaderByteCode = ShaderBytecode.CompileFromFile("Shaders\\vertex.hlsl", "vertexShader", "vs_5_0");

            _vertexShader = new VertexShader(device, vertexShaderByteCode);
            CompilationResult pixelShaderByteCode = ShaderBytecode.CompileFromFile("Shaders\\pixel.hlsl", "pixelShader", "ps_5_0");

            _pixelShader = new PixelShader(device, pixelShaderByteCode);

            // Input elements.
            InputElement[] inputElements = new[] {
                new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0),
                new InputElement("NORMAL", 0, Format.R32G32B32A32_Float, 16, 0),
                new InputElement("COLOR", 0, Format.R32G32B32A32_Float, 32, 0),
                new InputElement("TEXCOORD", 0, Format.R32G32_Float, 48, 0),
                new InputElement("TEXCOORD", 1, Format.R32G32_Float, 56, 0)
            };

            // Layout from VertexShader input signature
            _shaderSignature = ShaderSignature.GetInputSignature(vertexShaderByteCode);
            _inputLayout     = new InputLayout(device, _shaderSignature, inputElements);

            Utilities.Dispose(ref vertexShaderByteCode);
            Utilities.Dispose(ref pixelShaderByteCode);

            // Prepare All the stages
            deviceContext.InputAssembler.InputLayout = _inputLayout;
            deviceContext.VertexShader.Set(_vertexShader);
            deviceContext.PixelShader.Set(_pixelShader);
        }
Esempio n. 2
0
        public Loader(DirectX3DGraphics directX3DGraphics, DirectX2DGraphics directX2DGraphics, Renderer renderer, ImagingFactory imagingFactory)
        {
            materials = new Dictionary <string, Material>();
            textures  = new Dictionary <string, Texture>();

            _directX3DGraphics = directX3DGraphics;
            _directX2DGraphics = directX2DGraphics;
            _renderer          = renderer;
            _imagingFactory    = imagingFactory;
            samplerState       = new SamplerStates(_directX3DGraphics);
        }
        /// <summary>
        /// Constructor. Initialize all objects.
        /// </summary>
        public GameProcess()
        {
            audioDevice           = new SharpAudioDevice();
            renderForm            = new RenderForm("SharpDX");
            renderForm.ClientSize = new Size(1500, 800);

            renderForm.UserResized += RenderFormResizedCallback;
            renderForm.Activated   += RenderFormActivatedCallback;
            renderForm.Deactivate  += RenderFormDeactivateCallback;
            directX3DGraphics       = new DirectX3DGraphics(renderForm);
            renderer = new Renderer(directX3DGraphics);
            renderer.CreateConstantBuffers();
            directX2DGraphics = new DirectX2DGraphics(directX3DGraphics);
            Loader loader = new Loader(directX3DGraphics, directX2DGraphics, renderer, directX2DGraphics.ImagingFactory);

            samplerStates = new SamplerStates(directX3DGraphics);
            timeHelper    = new TimeHelper();

            InitializeTextures(loader);
            renderer.SetWhiteTexture(textures["white.bmp"]);
            loader.StubTexture = textures["white.bmp"];
            materials          = loader.LoadMaterials("Resources\\materials.txt", textures);

            Vector3 initial = new Vector3(105f, 0, -105f);
            Vector4 pos     = new Vector4(0, 0, 0, 0);

            InitHUDResources();
            InitializeLight();

            inputController = new InputController(renderForm);

            mainCharacterService = new MainCharacterService("some", inputController, loader, materials[3], audioDevice);
            Queue <string> files = new Queue <string>();

            files.Enqueue("Resources\\Description\\map1.txt");
            files.Enqueue("Resources\\Description\\map1.txt");
            levelService = new LevelService(files, mainCharacterService, loader, materials[2], inputController, audioDevice);

            cameraService = new CameraService(new Camera(new Vector4(-119.0f, 144.0f, 129.0f, 1.0f)), inputController);

            Vector4 initialPosition = new Vector4(20.5f, 1f, 20.5f, 1);
            Vector4 position        = initialPosition;

            loader = null;
        }