Пример #1
0
        public CVertexShader(ICDevice device, CShaderReflection reflection)
            : base(device, reflection)
        {
            profile = ParseProfile(reflection.Profile);

            var text = GenerateText();
            try
            {
                var bytecode = ShaderBytecode.Compile(text, "main", ProfileToString(profile), ShaderFlags.PackMatrixColumnMajor | ShaderFlags.OptimizationLevel3);
                d3dShader = new VertexShader(device.D3DDevice, bytecode);
                bytecode.Dispose();
            }
            catch (Exception e)
            {
                throw new ArgumentException(string.Format("Failed to compile a vertex shader '{0}'\r\n--- Code ---\r\n{1}\r\n--- Errors ---\r\n{2}", Name, text, e.Message), e);
            }

            d3dVertexElementsDraft = CreateVertexElementsDraft(reflection);
        }
Пример #2
0
 public static string ProfileToString(VertexShaderProfile profile)
 {
     switch (profile)
     {
         case VertexShaderProfile.vs_4_0: return "vs_4_0";
         case VertexShaderProfile.vs_4_1: return "vs_4_1";
         case VertexShaderProfile.vs_5_0: return "vs_5_0";
         default: throw new ArgumentOutOfRangeException("profile");
     }
 }