예제 #1
0
        public ShaderD3D11(DeviceD3D11 device, ShaderBytecode bytecode)
            : base(device, bytecode)
        {
            switch (bytecode.Stage)
            {
            case ShaderStages.Vertex:
                Bytecode    = (byte[])bytecode.Data.Clone();
                D3D11Shader = device.D3D11Device.CreateVertexShader(bytecode.Data);
                break;

            case ShaderStages.Hull:
                D3D11Shader = device.D3D11Device.CreateHullShader(bytecode.Data);
                break;

            case ShaderStages.Domain:
                D3D11Shader = device.D3D11Device.CreateDomainShader(bytecode.Data);
                break;

            case ShaderStages.Geometry:
                D3D11Shader = device.D3D11Device.CreateGeometryShader(bytecode.Data);
                break;

            case ShaderStages.Pixel:
                D3D11Shader = device.D3D11Device.CreatePixelShader(bytecode.Data);
                break;

            case ShaderStages.Compute:
                D3D11Shader = device.D3D11Device.CreateComputeShader(bytecode.Data);
                break;
            }
        }
예제 #2
0
        public static void SetDebugObjectName(this ID3D11DeviceChild child, string name)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException(null, nameof(name));
            }

            using (var mem = new ComMemory(name))
            {
                child.SetPrivateData(WKPDID_D3DDebugObjectNameW, (uint)(name.Length * 2), mem.Pointer).ThrowOnError();
            }
        }
예제 #3
0
        public static void SetDebugObjectName(this ID3D11DeviceChild child, string name)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException(null, nameof(name));
            }

            using (var mem = new ComMemory(name))
            {
#pragma warning disable CA1062 // Validate arguments of public methods
                _ = child.SetPrivateData(WKPDID_D3DDebugObjectNameW, (uint)(name.Length * 2), mem.Pointer).ThrowOnError();
#pragma warning restore CA1062 // Validate arguments of public methods
            }
        }