S3GLProgram
WebGLのプログラム(Program)管理クラス。 頂点・フラグメント2つのシェーダーと、それらをリンクしたGLプログラムオブジェクトを保持し、 各種attribute/uniform変数とのバインドや、プログラム切替・破棄などの管理を担います。 S3GLSystem経由でのWebGL描画制御のコアとなります。
Constructor Summary
Public Constructor | ||
public |
constructor(sys: S3GLSystem, id: number) WebGLプログラムを初期化します。 |
Member Summary
Public Members | ||
public |
次にバインド予定のアクティブテクスチャ番号 |
|
public |
有効化済みのattributeロケーション番号管理 |
|
public |
フラグメントシェーダインスタンス |
|
public |
プログラム一意ID |
|
public |
フラグメントシェーダがダウンロード中かどうか |
|
public |
頂点シェーダがダウンロード中かどうか |
|
public |
エラー発生済みかどうか |
|
public |
GL上でリンク済みかどうか |
|
public |
program: WebGLProgram リンク済みGLプログラム |
|
public |
GLシステムインスタンス |
|
public |
シェーダ変数管理構造体 |
|
public |
頂点シェーダインスタンス |
Method Summary
Public Methods | ||
public |
bindData(name: string, data: S3GLProgramBindInputData): boolean attribute/uniform変数にデータをバインドします。 シェーダー内で使用されている変数名に対し、値・バッファ・テクスチャ等を型に応じて結びつけます。 |
|
public |
メッシュ(S3GLMesh)全体をこのプログラムにバインドします。 内部でattribute変数とVBO/IBOなどを結び付け、必要なバッファ設定も行います。 |
|
public |
プログラム・シェーダーを全て解放し、GLリソースも破棄します。 以後このインスタンスは再利用できません。 |
|
public |
このプログラムの有効化状態を解除します(バッファ属性解放など)。 |
|
public |
getProgram(): WebGLProgram プログラムのGLオブジェクト(WebGLProgram)を取得・生成します。 シェーダー・GLの準備やリンク状況など全て検証し、問題なければ生成・返却します。 |
|
public |
プログラムがすでにGL上でリンク済みかどうか判定します。 |
|
public |
使用するアクティブテクスチャ番号をリセットします。 テクスチャbind前に毎回呼び出し、TEXTUREユニットIDを初期化します。 |
|
public |
setFragmentShader(shader_code: string): boolean フラグメントシェーダを設定します。既存のリンク状態なら設定不可。 |
|
public |
setVertexShader(shader_code: string): boolean 頂点シェーダを設定します。既存のリンク状態なら設定不可。 |
|
public |
このプログラムをGLでuseProgram(アクティブ化)します。 |
Private Methods | ||
private |
_init(sys: S3GLSystem, id: number) プログラムの内部初期化。 変数情報・シェーダー状態・リンク済みフラグ等をリセットします。 |
Public Constructors
public constructor(sys: S3GLSystem, id: number) source
WebGLプログラムを初期化します。
Params:
Name | Type | Attribute | Description |
sys | S3GLSystem | GLシステムインスタンス |
|
id | number | プログラム一意識別ID |
Public Members
Public Methods
public bindData(name: string, data: S3GLProgramBindInputData): boolean source
attribute/uniform変数にデータをバインドします。 シェーダー内で使用されている変数名に対し、値・バッファ・テクスチャ等を型に応じて結びつけます。
Params:
Name | Type | Attribute | Description |
name | string | 変数名(シェーダー内で宣言された名前) |
|
data | S3GLProgramBindInputData | バインドしたい値やバッファ、テクスチャなど |
public bindMesh(s3mesh: S3GLMesh): number source
メッシュ(S3GLMesh)全体をこのプログラムにバインドします。 内部でattribute変数とVBO/IBOなどを結び付け、必要なバッファ設定も行います。
Params:
Name | Type | Attribute | Description |
s3mesh | S3GLMesh | S3GLMesh インスタンス |
public getProgram(): WebGLProgram source
プログラムのGLオブジェクト(WebGLProgram)を取得・生成します。 シェーダー・GLの準備やリンク状況など全て検証し、問題なければ生成・返却します。
Return:
WebGLProgram (nullable: true) | GLプログラムオブジェクト(未生成・エラー時はnull) |
public resetActiveTextureId() source
使用するアクティブテクスチャ番号をリセットします。 テクスチャbind前に毎回呼び出し、TEXTUREユニットIDを初期化します。
public setFragmentShader(shader_code: string): boolean source
フラグメントシェーダを設定します。既存のリンク状態なら設定不可。
Params:
Name | Type | Attribute | Description |
shader_code | string | GLSLソースコードまたはURL |
public setVertexShader(shader_code: string): boolean source
頂点シェーダを設定します。既存のリンク状態なら設定不可。
Params:
Name | Type | Attribute | Description |
shader_code | string | GLSLソースコードまたはURL |
Private Methods
private _init(sys: S3GLSystem, id: number) source
プログラムの内部初期化。 変数情報・シェーダー状態・リンク済みフラグ等をリセットします。
Params:
Name | Type | Attribute | Description |
sys | S3GLSystem | ||
id | number |