Exemplo n.º 1
0
        public void Init(SharpDX.Direct3D11.Device device)
        {
            vertexBuffer        = Buffer.Create(device, BindFlags.VertexBuffer, vertices, vertices.Length * ImmediateVertexSize, ResourceUsage.Dynamic, CpuAccessFlags.Write);
            vertexBufferBinding = new VertexBufferBinding()
            {
                Buffer = vertexBuffer, Offset = 0, Stride = ImmediateVertexSize
            };

            var cb = new ImmediateConstantBuffer()
            {
                WVPMatrix   = Matrix.Identity,
                iResolution = Vector4.Zero,
                iTime       = 0,
                CameraPos   = Vector3.Zero,
                CameraDir   = Matrix.Identity,
            };

            worldViewProjectionBuffer = Buffer.Create(device, BindFlags.ConstantBuffer, ref cb);
            this.ConstantBuffer       = cb;

            for (int i = 0; i < textures.Length; ++i)
            {
                textures[i].texture = null;
                textures[i].view    = null;
                textures[i].sampler = new SamplerState(device, new SamplerStateDescription()
                {
                    Filter             = Filter.MinMagMipLinear,
                    AddressU           = TextureAddressMode.Clamp,
                    AddressV           = TextureAddressMode.Clamp,
                    AddressW           = TextureAddressMode.Clamp,
                    BorderColor        = Color.Black,
                    ComparisonFunction = Comparison.Never,
                    MaximumAnisotropy  = 16,
                    MipLodBias         = 0,
                    MinimumLod         = 0,
                    MaximumLod         = float.MaxValue,
                });
            }

            ShaderBank = new ShaderBank(device);
            ShaderBank.LoadShader("raytracer", "raytracer.fx",
                                  new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0));

            Shader  = ShaderBank["raytracer"];
            Context = device.ImmediateContext;
        }
Exemplo n.º 2
0
        public void Dispose()
        {
            ShaderBank.Dispose();

            for (int i = 0; i < textures.Length; ++i)
            {
                textures[i].texture = null;
                if (textures[i].view != null)
                {
                    textures[i].view.Dispose();
                }
                textures[i].sampler.Dispose();
            }

            worldViewProjectionBuffer.Dispose();
            vertexBuffer.Dispose();

            worldViewProjectionBuffer = null;
            vertexBuffer = null;
            Context      = null;
        }