makeProgram¶
-
GPGPU.
makeProgram
(vertex_shader, fragment_shader, varyings)¶ WebGLのプログラムを作ります。
ソース¶
makeProgram(vertex_shader, fragment_shader, varyings) {
// プログラムを作る。
var prg = gl.createProgram(); chk();
// 頂点シェーダをアタッチする。
gl.attachShader(prg, vertex_shader); chk();
// フラグメントシェーダをアタッチする。
gl.attachShader(prg, fragment_shader); chk();
if (varyings) {
// varying変数がある場合
// varying変数の名前の配列
var varying_names = varyings.map(x => x.name);
// Transform Feedbackで使うvarying変数を指定する。
gl.transformFeedbackVaryings(prg, varying_names, gl.SEPARATE_ATTRIBS); chk(); // gl.INTERLEAVED_ATTRIBS
}
// プログラムをリンクする。
gl.linkProgram(prg); chk();
if (!gl.getProgramParameter(prg, gl.LINK_STATUS)) {
// リンクエラーがある場合
console.log("Link Error:" + gl.getProgramInfoLog(prg));
}
// 頂点シェーダを削除する。
gl.deleteShader(vertex_shader); chk();
// フラグメントシェーダを削除する。
gl.deleteShader(fragment_shader); chk();
return prg;
}