OpenTKOpenTKがGitHubで更新されるようになりました。NuGetから手に入れることができるようになりました。Coreに対応する機運があるようです。自作のシェーダとは固定機能のシェーダとプログラマブルシェーダここからは、シェーダという物を自作していくことになります。今まで表示していたものは、"固定機能"としてあらかじめ用意されていたシェーダを使って描画していました。このシェーダを使うのは簡単(何もしない)ですが、選択の自由がほとんど無く、最近のOpenGLで使うことはほぼありません。自作のシェーダは、登録の処理やシェーダの記述など、面倒なことは増えてしまう代わりに表現の幅が大きく広がります。ここでは、プログラマブルシェーダの作り方や使用法を紹介します。手順まず、プログラマブルシェーダを作るために、OpenGLではGLSLという言語でシェーダを記述していきます。GLSLはC言語に似た言語で、OpenTKでC#を使っている方なら問題なく使えるでしょう。OpenTKでの処理としては、まず始めに各シェーダのオブジェクトを生成します。そこにシェーダのコードを指定して、コンパイルします。次にシェーダプログラムのオブジェクトを生成します。このプログラムというものは、複数のシェーダオブジェクトを束ねるものと考えるといいと思います。そこにコンパイルしたシェーダを登録し、OpenGL本体のプログラムにこれを登録します。このシェーダプログラムを実際に利用するときは、テクスチャバッファと同じように、このシェーダプログラムを使う、という宣言をします。赤い四角形を描画ソースコードは、シェーダを使うための処理で長くなっています。今回使うシェーダを示します。1.0);}上は頂点の情報に対する処理、下は面を構成するピクセルに対する処理ですが、詳細はここでは説明しません。ApplicationException(GL.GetShaderInfoLog(fragmentShader));}上から順番に2から4までの処理をそれぞれ行っています。シェーダの記述にエラーがあれば例外を発生するようにしました。ApplicationException(GL.GetProgramInfoLog(shaderProgram));}#endregion//シェーダプログラムを使用GL.UseProgram(shaderProgram);上から5から8までの処理をそれぞれ行っています。シェーダプログラムのリンクにエラーがあれば例外を発生するようにしました。最後に、テクスチャと同じように、シェーダプログラムの使用を宣言しています。ここに0を指定すると、何も指定しないことになります。177行目と、178行目でシェーダオブジェクトを削除してしまっていますが、シェーダオブジェクトは一度プログラムに登録してしまえば、再度そのオブジェクトが使われることは無いので、さっさと消してしまっています。//ウィンドウの終了時に実行される。e){base.OnUnload(e);GL.DeleteProgram(shaderProgram);}プログラムを終了するときは、シェーダのプログラムを削除します。MasuqaT.NET。