Exemplo n.º 1
0
        internal RasterizerState GetRasterizerState(ref RasterizerStateDescription description, bool multisample)
        {
            D3D11RasterizerStateCacheKey key = new D3D11RasterizerStateCacheKey(description, multisample);

            if (!_rasterizerStates.TryGetValue(key, out RasterizerState rasterizerState))
            {
                rasterizerState = CreateNewRasterizerState(ref key);
                _rasterizerStates.Add(key, rasterizerState);
            }

            return(rasterizerState);
        }
Exemplo n.º 2
0
        private RasterizerState GetRasterizerState(ref RasterizerStateDescription description, bool multisample)
        {
            Debug.Assert(Monitor.IsEntered(_lock));
            D3D11RasterizerStateCacheKey key = new D3D11RasterizerStateCacheKey(description, multisample);

            if (!_rasterizerStates.TryGetValue(key, out RasterizerState rasterizerState))
            {
                rasterizerState = CreateNewRasterizerState(ref key);
                _rasterizerStates.Add(key, rasterizerState);
            }

            return(rasterizerState);
        }
Exemplo n.º 3
0
        private RasterizerState CreateNewRasterizerState(ref D3D11RasterizerStateCacheKey key)
        {
            SharpDX.Direct3D11.RasterizerStateDescription rssDesc = new SharpDX.Direct3D11.RasterizerStateDescription
            {
                CullMode                = D3D11Formats.VdToD3D11CullMode(key.VeldridDescription.CullMode),
                FillMode                = D3D11Formats.VdToD3D11FillMode(key.VeldridDescription.FillMode),
                IsDepthClipEnabled      = key.VeldridDescription.DepthClipEnabled,
                IsScissorEnabled        = key.VeldridDescription.ScissorTestEnabled,
                IsFrontCounterClockwise = key.VeldridDescription.FrontFace == FrontFace.CounterClockwise,
                IsMultisampleEnabled    = key.Multisampled
            };

            return(new RasterizerState(_device, rssDesc));
        }
Exemplo n.º 4
0
        private ID3D11RasterizerState CreateNewRasterizerState(ref D3D11RasterizerStateCacheKey key)
        {
            RasterizerDescription rssDesc = new RasterizerDescription
            {
                CullMode              = D3D11Formats.VdToD3D11CullMode(key.VeldridDescription.CullMode),
                FillMode              = D3D11Formats.VdToD3D11FillMode(key.VeldridDescription.FillMode),
                DepthClipEnable       = key.VeldridDescription.DepthClipEnabled,
                ScissorEnable         = key.VeldridDescription.ScissorTestEnabled,
                FrontCounterClockwise = key.VeldridDescription.FrontFace == FrontFace.CounterClockwise,
                MultisampleEnable     = key.Multisampled
            };

            return(_device.CreateRasterizerState(rssDesc));
        }