シェーダーのコンパイルに失敗した時に発生する例外
Inheritance: System.ApplicationException
コード例 #1
0
ファイル: Program.cs プロジェクト: seanshuyuu/StudiesOfOpenTK
        /// <summary>
        /// シェーダーを作成する
        /// </summary>
        /// <param name="source">シェーダーのソース</param>
        /// <param name="type">シェーダーの種類</param>
        /// <returns>シェーダーID</returns>
        public static int CreateShader(string source, ShaderType type)
        {
            // シェーダーを作成
            int shader = GL.CreateShader(type);

            // ソースから読み込んでコンパイル
            GL.ShaderSource(shader, source);
            GL.CompileShader(shader);

            // シェーダーのコンパイル状態を取得
            int status;

            GL.GetShader(shader, ShaderParameter.CompileStatus, out status);

            // コンパイルに成功していなかったら
            if (status != 1)
            {
                // 例外
                var ex = new CompileShaderException(shader, type, GL.GetShaderInfoLog(shader));
                throw ex;
            }

            // シェーダーを返す
            return(shader);
        }
コード例 #2
0
        /// <summary>
        /// シェーダーを作成する
        /// </summary>
        /// <param name="source">シェーダーのソース</param>
        /// <param name="type">シェーダーの種類</param>
        /// <returns>シェーダーID</returns>
        public static int CreateShader(string source, ShaderType type)
        {
            // シェーダーを作成
            int shader = GL.CreateShader(type);

            // ソースから読み込んでコンパイル
            GL.ShaderSource(shader, source);
            GL.CompileShader(shader);

            // シェーダーのコンパイル状態を取得
            int status;
            GL.GetShader(shader, ShaderParameter.CompileStatus, out status);

            // コンパイルに成功していなかったら
            if(status != 1)
            {
                // 例外
                var ex = new CompileShaderException(shader, type, GL.GetShaderInfoLog(shader));
                throw ex;
            }

            // シェーダーを返す
            return shader;
        }