Home Manual Reference Source
import S3GLProgram from 's3js/src/gl/S3GLProgram.js'
public class | source

S3GLProgram

WebGLのプログラム(Program)管理クラス。 頂点・フラグメント2つのシェーダーと、それらをリンクしたGLプログラムオブジェクトを保持し、 各種attribute/uniform変数とのバインドや、プログラム切替・破棄などの管理を担います。 S3GLSystem経由でのWebGL描画制御のコアとなります。

Constructor Summary

Public Constructor
public

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

attribute/uniform変数にデータをバインドします。 シェーダー内で使用されている変数名に対し、値・バッファ・テクスチャ等を型に応じて結びつけます。

public

メッシュ(S3GLMesh)全体をこのプログラムにバインドします。 内部でattribute変数とVBO/IBOなどを結び付け、必要なバッファ設定も行います。

public

プログラム・シェーダーを全て解放し、GLリソースも破棄します。 以後このインスタンスは再利用できません。

public

このプログラムの有効化状態を解除します(バッファ属性解放など)。

public

getProgram(): WebGLProgram

プログラムのGLオブジェクト(WebGLProgram)を取得・生成します。 シェーダー・GLの準備やリンク状況など全て検証し、問題なければ生成・返却します。

public

プログラムがすでにGL上でリンク済みかどうか判定します。

public

使用するアクティブテクスチャ番号をリセットします。 テクスチャbind前に毎回呼び出し、TEXTUREユニットIDを初期化します。

public

フラグメントシェーダを設定します。既存のリンク状態なら設定不可。

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:

NameTypeAttributeDescription
sys S3GLSystem

GLシステムインスタンス

id number

プログラム一意識別ID

Public Members

public activeTextureId: number source

次にバインド予定のアクティブテクスチャ番号

public enable_vertex_number: Object<number, boolean> source

有効化済みのattributeロケーション番号管理

public fragment: S3GLShader source

フラグメントシェーダインスタンス

public id: number source

プログラム一意ID

public isDLFragment: boolean source

フラグメントシェーダがダウンロード中かどうか

public isDLVertex: boolean source

頂点シェーダがダウンロード中かどうか

public is_error: boolean source

エラー発生済みかどうか

public is_linked: boolean source

GL上でリンク済みかどうか

public program: WebGLProgram source

リンク済みGLプログラム

public sys: S3GLSystem source

GLシステムインスタンス

public variable: Object<string, S3GLShaderData> source

シェーダ変数管理構造体

public vertex: S3GLShader source

頂点シェーダインスタンス

Public Methods

public bindData(name: string, data: S3GLProgramBindInputData): boolean source

attribute/uniform変数にデータをバインドします。 シェーダー内で使用されている変数名に対し、値・バッファ・テクスチャ等を型に応じて結びつけます。

Params:

NameTypeAttributeDescription
name string

変数名(シェーダー内で宣言された名前)

data S3GLProgramBindInputData

バインドしたい値やバッファ、テクスチャなど

Return:

boolean

正常にバインドできればtrue

public bindMesh(s3mesh: S3GLMesh): number source

メッシュ(S3GLMesh)全体をこのプログラムにバインドします。 内部でattribute変数とVBO/IBOなどを結び付け、必要なバッファ設定も行います。

Params:

NameTypeAttributeDescription
s3mesh S3GLMesh

S3GLMesh インスタンス

Return:

number

IBOのインデックス数(drawElements用)

public dispose(): boolean source

プログラム・シェーダーを全て解放し、GLリソースも破棄します。 以後このインスタンスは再利用できません。

Return:

boolean

正常終了時true、GL未設定時false

public disuseProgram(): boolean source

このプログラムの有効化状態を解除します(バッファ属性解放など)。

Return:

boolean

成功時true

public getProgram(): WebGLProgram source

プログラムのGLオブジェクト(WebGLProgram)を取得・生成します。 シェーダー・GLの準備やリンク状況など全て検証し、問題なければ生成・返却します。

Return:

WebGLProgram (nullable: true)

GLプログラムオブジェクト(未生成・エラー時はnull)

public isLinked(): boolean source

プログラムがすでにGL上でリンク済みかどうか判定します。

Return:

boolean

リンク済みならtrue

public resetActiveTextureId() source

使用するアクティブテクスチャ番号をリセットします。 テクスチャbind前に毎回呼び出し、TEXTUREユニットIDを初期化します。

public setFragmentShader(shader_code: string): boolean source

フラグメントシェーダを設定します。既存のリンク状態なら設定不可。

Params:

NameTypeAttributeDescription
shader_code string

GLSLソースコードまたはURL

Return:

boolean

成功時true、リンク済みまたはDL中はfalse

public setVertexShader(shader_code: string): boolean source

頂点シェーダを設定します。既存のリンク状態なら設定不可。

Params:

NameTypeAttributeDescription
shader_code string

GLSLソースコードまたはURL

Return:

boolean

成功時true、リンク済みまたはDL中はfalse

public useProgram(): boolean source

このプログラムをGLでuseProgram(アクティブ化)します。

Return:

boolean

成功時true

Private Methods

private _init(sys: S3GLSystem, id: number) source

プログラムの内部初期化。 変数情報・シェーダー状態・リンク済みフラグ等をリセットします。

Params:

NameTypeAttributeDescription
sys S3GLSystem
id number