protected void PrepareStates(DeviceContextHolder contextHolder, SpecialRenderMode mode) {
contextHolder.DeviceContext.InputAssembler.InputLayout = Effect.LayoutPNTG;
contextHolder.DeviceContext.OutputMerger.BlendState = IsBlending ? contextHolder.TransparentBlendState : null;
if (mode == SpecialRenderMode.SimpleTransparent || mode == SpecialRenderMode.Outline) return;
switch (Kn5Material.DepthMode) {
case Kn5MaterialDepthMode.DepthNormal:
contextHolder.DeviceContext.OutputMerger.DepthStencilState = null;
break;
case Kn5MaterialDepthMode.DepthNoWrite:
contextHolder.DeviceContext.OutputMerger.DepthStencilState = contextHolder.ReadOnlyDepthState;
break;
case Kn5MaterialDepthMode.DepthOff:
contextHolder.DeviceContext.OutputMerger.DepthStencilState = contextHolder.DisabledDepthState;
break;
default:
throw new ArgumentOutOfRangeException();
}
}