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); }
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"); } }