示例#1
0
        public void InitializeResources(string[] cubetexturePath, string pathVertShader, string pathPixShader, InputElements input, string vertFilePath = "")
        {
            InitializeVertices(vertFilePath);
            // Update();
            VertexBuffer = Direct3D11.Buffer.Create(Device, BindFlags.VertexBuffer, Vertices);

            MainShaderManager.Initialize(Device, input, VertexBuffer, pathVertShader, pathPixShader);
            ShadowShaderManager.Initialize(Device, VertexBuffer, true);

            Material = new Materials.Silver();



            List <Texture2D> temttext = new List <Texture2D>();

            foreach (string texturePath in cubetexturePath)
            {
                temttext.Add(TextureLoader.CreateTexture2DFromBitmap(Device, TextureLoader.LoadBitmap(new ImagingFactory2(), texturePath)));
            }

            Texture2D texture2D = new Texture2D(Device, new Texture2DDescription
            {
                ArraySize         = 6,
                MipLevels         = 1,
                Height            = temttext[0].Description.Height,
                Width             = temttext[0].Description.Width,
                CpuAccessFlags    = CpuAccessFlags.None,
                Format            = DXGI.Format.R8G8B8A8_UNorm,
                BindFlags         = BindFlags.ShaderResource,
                OptionFlags       = ResourceOptionFlags.TextureCube,
                SampleDescription = new DXGI.SampleDescription(1, 0),
                Usage             = ResourceUsage.Default //!!
            });

            TexturesCube = temttext.ToArray();

            isTextureCube = true;

            for (int i = 0; i < 6; i++)
            {
                Device.ImmediateContext.CopySubresourceRegion(TexturesCube[i], 0, null, texture2D, i);
                TexturesCube[i].Dispose();
            }

            TextureView = new ShaderResourceView(Device, texture2D);

            ShadowTransformBuffer = new Direct3D11.Buffer(Device, Utilities.SizeOf <Matrix>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0);
            ShadowWorldBuffer     = new Direct3D11.Buffer(Device, Utilities.SizeOf <MatrixBufferStruct>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0);
        }
示例#2
0
        public void InitializeResources(ShaderResourceView textureResourceView, Materials.AbstractMaterial material, string pathVertShader, string pathPixShader, InputElements input, string vertFilePath = "")
        {
            InitializeVertices(vertFilePath);
            // this.Update();
            VertexBuffer = Direct3D11.Buffer.Create(Device, BindFlags.VertexBuffer, Vertices);

            MainShaderManager.Initialize(Device, input, VertexBuffer, pathVertShader, pathPixShader);
            ShadowShaderManager.Initialize(Device, VertexBuffer, true);

            Material = material;

            TextureView = textureResourceView;

            ShadowTransformBuffer = new Direct3D11.Buffer(Device, Utilities.SizeOf <Matrix>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0);
            ShadowWorldBuffer     = new Direct3D11.Buffer(Device, Utilities.SizeOf <MatrixBufferStruct>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0);
        }
示例#3
0
        public void UpdateResources(ShaderResourceView texture = null, Materials.AbstractMaterial material = null, string vertFilePath = "")
        {
            if (texture != null)
            {
                TextureView?.Dispose();

                TextureView = texture;
            }

            if (material != null)
            {
                Material = material;
            }

            if (vertFilePath != "")
            {
                InitializeVertices(vertFilePath);
            }
        }
示例#4
0
        public void UpdateResources(string texturePath = "", Materials.AbstractMaterial material = null, string vertFilePath = "")
        {
            if (texturePath != "")
            {
                Texture?.Dispose();
                TextureView?.Dispose();
                Texture     = TextureLoader.CreateTexture2DFromBitmap(Device, TextureLoader.LoadBitmap(new ImagingFactory2(), texturePath));
                TextureView = new ShaderResourceView(Device, Texture);
            }

            if (material != null)
            {
                Material = material;
            }

            if (vertFilePath != "")
            {
                InitializeVertices(vertFilePath);
            }
        }
示例#5
0
        public void UpdateResources(Texture2D[] cubetextures, Materials.AbstractMaterial material = null, string vertFilePath = "")
        {
            Texture?.Dispose();
            TextureView?.Dispose();
            TexturesCube = cubetextures;


            Texture2D texture2D = new Texture2D(Device, new Texture2DDescription
            {
                ArraySize         = 6,
                MipLevels         = 1,
                Height            = 512,
                Width             = 512,
                CpuAccessFlags    = CpuAccessFlags.Read,
                Format            = DXGI.Format.R32G32B32A32_UInt,
                BindFlags         = BindFlags.ShaderResource,
                OptionFlags       = ResourceOptionFlags.TextureCube,
                SampleDescription = new DXGI.SampleDescription(1, 0),
                Usage             = ResourceUsage.Immutable //!!
            });

            isTextureCube = true;

            for (int i = 0; i < 6; i++)
            {
                Device.ImmediateContext.CopySubresourceRegion(cubetextures[i], 0, null, texture2D, i);
                cubetextures[i].Dispose();
            }

            TextureView = new ShaderResourceView(Device, texture2D);

            if (material != null)
            {
                Material = material;
            }

            if (vertFilePath != "")
            {
                InitializeVertices(vertFilePath);
            }
        }