▶ 実 行
▶ 実行
クリア
WEBGLのシェーダを利用する際の補助関数群(nako3プラグイン)
by てぃふと@うぇいく
# WEBGLのシェーダを利用する際の補助関数群 # webgl_shader_helper.nako3 # !「https://n3s.nadesi.com/plain/564.nako3」を取り込む ●(プログラムの)パラメータロケーション情報更新とは PGMはプログラム["PROGRAM"] プログラム["PARAM"]を反復 項目はプログラム["PARAM"][対象キー] もし、項目["TYPE"]が"ATTR"ならば、 項目["LOC"]はPGMから項目["NAME"]のGL属性ロケーション取得 違えば、 項目["LOC"]はPGMから項目["NAME"]のGL共有データロケーション取得 ここまで ここまで ここまで ●(プログラムにOPTSで)シェーダプログラムパラメータ設定とは 使用リソースは{ テクスチャ:[], 属性:[] } もし、OPTS["属性"]ならば、 OPTS["属性"]を反復する 使用属性はプログラムに対象でシェーダプログラム属性設定する 使用リソース["属性"]は使用リソース["属性"]に使用属性を配列足す ここまで ここまで もし、OPTS["共有データ"]ならば、 OPTS["共有データ"]を反復する 項目はプログラム["PARAM"][対象キー] もし、項目ならば、 データはOPTS["共有データ"][対象キー] データを項目["LOC"]に項目["TYPE"]でGL共有データ設定 ここまで ここまで ここまで TEXIDは0 もし、OPTS["テクスチャ"]ならば、 Fは『(function(a) {return a instanceof Array;})』を[OPTS["テクスチャ"]]でJS関数実行 もし、Fならば、 OPTS["テクスチャ"]を反復する データは対象 項目名はデータ["共有データ名"] 項目はプログラム["PARAM"][項目名] もし、項目ならば、 TEXIDをGLテクスチャ枠指定 データ["テクスチャ"]をGLテクスチャ設定 TEXIDを項目["LOC"]に項目["TYPE"]でGL共有データ設定 使用リソース["テクスチャ"]にTEXIDを配列追加 TEXIDはTEXID+1 ここまで ここまで 違えば、 OPTS["テクスチャ"]を反復する 項目はプログラム["PARAM"][対象キー] もし、項目ならば、 データはOPTS["テクスチャ"][対象キー] TEXIDをGLテクスチャ枠指定 データをGLテクスチャ設定 TEXIDを項目["LOC"]に項目["TYPE"]でGL共有データ設定 使用リソース["テクスチャ"]にTEXIDを配列追加 TEXIDはTEXID+1 ここまで ここまで ここまで ここまで 使用リソースで戻る ここまで ●(使用リソースを)シェーダプログラムパラメータ解放とは もし、使用リソース["テクスチャ"]ならば、 使用リソース["テクスチャ"]を反復する 対象をGLテクスチャ枠指定 NULLをGLテクスチャ設定 ここまで ここまで もし、使用リソース["属性"]ならば、 使用リソース["属性"]をシェーダプログラム属性解放 ここまで ここまで ●(プログラムにバッファーで)シェーダプログラム属性設定とは 有効化一覧は[] バッファー["BUF"]をGLバッファ設定 バッファー["PARAM"]を反復する 項目はプログラム["PARAM"][対象キー] もし、項目ならば、 データはバッファー["PARAM"][対象キー] 項目["LOC"]をGL頂点属性有効 項目["LOC"]に{数:データ["NUM"], レコード長:バッファー["STRIDE"], オフセット:データ["OFFSET"] }でGL頂点属性書式設定 有効化一覧に項目["LOC"]を配列追加 ここまで ここまで NULLをGLバッファ設定 有効化一覧で戻る ここまで ●(有効化一覧を)シェーダプログラム属性解放とは 有効化一覧を反復する 対象をGL頂点属性無効 ここまで ここまで もし、プラグイン名が「メイン」ならば、 『WEBGLのシェーダを利用する際の補助関数群 のプラグインです』を表示 『このプラグインの動作には、「WebGL APIのプラグイン」が必要です』を表示 ここまで