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

S3GLSystem

Extends:

* → S3GLSystem

WebGLレンダリングシステムを管理するクラス。 シェーダー、テクスチャ、バッファオブジェクトの生成・管理、および描画制御を担当。 WebGLの初期化やプログラムのセットアップ、シーンの描画などの処理を含む。

Constructor Summary

Public Constructor
public

S3GLSystemインスタンスを生成します。 WebGLコンテキストやプログラムの初期設定を行います。

Member Summary

Public Members
public

canvas: HTMLCanvasElement

public

gl: WebGLRenderingContext

public

glfunc: {"createBufferVBO": *, "createBufferIBO": *, "deleteBuffer": *, "createTexture": *, "deleteTexture": *, "createProgram": *, "deleteProgram": *, "createShader": *, "deleteShader": *}

WebGLバッファ、テクスチャ、シェーダを作成・削除するユーティリティ関数群。

public
public
public
public
Private Members
private

_textureDummyData: WebGLTexture

private

Method Summary

Public Methods
public

描画クリア処理を行います(背景色・深度バッファのリセット)。

public

GL用のカメラインスタンスを生成します。

public

GL用のライトインスタンスを生成します。

public

GL用のマテリアルインスタンスを生成します。

public

GL用のメッシュインスタンスを生成します。

public

GL用のモデルインスタンスを生成します。

public

新しいシェーダープログラムを生成し取得します。

public

GL用のシーンインスタンスを生成します。

public

createTexture(name: string | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): S3GLTexture

GL用のテクスチャインスタンスを生成します。

public

createTriangleIndex(i1: number, i2: number, i3: number, indexlist: Array<number>, materialIndex: number, uvlist: Array<S3Vector>): S3GLTriangleIndex

GL用の三角形インデックスインスタンスを生成します。

public

GL用の頂点インスタンス(S3GLVertex)を生成します。

public

deleteBuffer(data: WebGLBuffer): boolean

指定したWebGLバッファを削除します。

public

登録されている全てのシェーダープログラムを破棄します。

public

drawElements(indexsize: number): boolean

指定されたインデックスサイズに基づいて要素を描画します。

public

drawScene(scene: S3GLScene): void

シーン全体を描画します。 プログラム設定や深度・カリングモードの設定、各種Uniformやモデルバインド・描画を自動実行します。

public

getGL(): WebGLRenderingContext

WebGLコンテキストを取得します。

public

WebGLコンテキストが設定されているかを確認します。

public

setCanvas(canvas: HTMLCanvasElement)

描画対象となるCanvasを設定します。

public

シェーダープログラムをアクティブにします。

Private Methods
private

_bind(args: ...any): number

モデル・uniforms・名前と値を与えた場合のデータバインド処理を実行します。

  • 2引数: シェーダ変数名とデータをバインド
  • 1引数: S3GLModelならメッシュ情報をバインド
  • 1引数: uniforms情報ならすべてのuniformsをバインド
private

描画後処理として、バインド状態の解放やクリーンアップを行います。 (本実装では何もしていません。拡張用)

private

描画前処理として、アクティブなテクスチャIDをリセットします。 通常は内部的に呼ばれます。

private

_disposeObject(obj: Object): void

不要になったリソースを解放します(未実装)。

private

_getDummyTexture(): WebGLTexture

1x1ピクセルのダミーテクスチャ(WebGLTexture)を取得します。 まだ生成されていない場合は新規作成します。テクスチャ未指定時の代替として利用されます。

private

WebGLのカリングモード(描画面の制御)を設定します。 カリングの有無・前面/背面/両面の設定も行います。

private

深度バッファのテストモードをWebGLで有効化します。 通常は自動的に呼ばれます。

Public Constructors

public constructor() source

S3GLSystemインスタンスを生成します。 WebGLコンテキストやプログラムの初期設定を行います。

Public Members

public canvas: HTMLCanvasElement source

public gl: WebGLRenderingContext source

public glfunc: {"createBufferVBO": *, "createBufferIBO": *, "deleteBuffer": *, "createTexture": *, "deleteTexture": *, "createProgram": *, "deleteProgram": *, "createShader": *, "deleteShader": *} source

WebGLバッファ、テクスチャ、シェーダを作成・削除するユーティリティ関数群。

public is_set: boolean source

public program: S3GLProgram source

public program_list: Array<S3GLProgram> source

public program_listId: number source

Private Members

private _textureDummyData: WebGLTexture source

private _textureDummyId: string source

Public Methods

public clear(): boolean source

描画クリア処理を行います(背景色・深度バッファのリセット)。

Return:

boolean

成功時true

public createCamera(): S3Camera source

GL用のカメラインスタンスを生成します。

Return:

S3Camera

生成されたGL用カメラ

public createLight(): S3GLLight source

GL用のライトインスタンスを生成します。

Return:

S3GLLight

生成されたGL用ライト

public createMaterial(name: string): S3GLMaterial source

GL用のマテリアルインスタンスを生成します。

Params:

NameTypeAttributeDescription
name string
  • optional

マテリアル名

Return:

S3GLMaterial

生成されたGL用マテリアル

public createMesh(): S3GLMesh source

GL用のメッシュインスタンスを生成します。

Return:

S3GLMesh

生成されたGL用メッシュ

public createModel(): S3GLModel source

GL用のモデルインスタンスを生成します。

Return:

S3GLModel

生成されたGL用モデル

public createProgram(): S3GLProgram source

新しいシェーダープログラムを生成し取得します。

Return:

S3GLProgram

新規生成されたシェーダープログラム

public createScene(): S3GLScene source

GL用のシーンインスタンスを生成します。

Return:

S3GLScene

生成されたGL用シーン

public createTexture(name: string | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): S3GLTexture source

GL用のテクスチャインスタンスを生成します。

Params:

NameTypeAttributeDescription
name string | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement
  • optional

テクスチャ名や画像データ

Return:

S3GLTexture

生成されたGL用テクスチャ

public createTriangleIndex(i1: number, i2: number, i3: number, indexlist: Array<number>, materialIndex: number, uvlist: Array<S3Vector>): S3GLTriangleIndex source

GL用の三角形インデックスインスタンスを生成します。

Params:

NameTypeAttributeDescription
i1 number

頂点1のインデックス

i2 number

頂点2のインデックス

i3 number

頂点3のインデックス

indexlist Array<number>

頂点インデックス配列

materialIndex number
  • optional

マテリアルインデックス

uvlist Array<S3Vector>
  • optional

UV座標配列

Return:

S3GLTriangleIndex

生成されたGL用三角形インデックス

public createVertex(position: S3Vector): S3GLVertex source

GL用の頂点インスタンス(S3GLVertex)を生成します。

Params:

NameTypeAttributeDescription
position S3Vector

頂点座標

Return:

S3GLVertex

生成されたGL用頂点

public deleteBuffer(data: WebGLBuffer): boolean source

指定したWebGLバッファを削除します。

Params:

NameTypeAttributeDescription
data WebGLBuffer

削除するバッファオブジェクト

Return:

boolean

成功時true

public disposeProgram() source

登録されている全てのシェーダープログラムを破棄します。

public drawElements(indexsize: number): boolean source

指定されたインデックスサイズに基づいて要素を描画します。

Params:

NameTypeAttributeDescription
indexsize number

インデックスバッファのサイズ

Return:

boolean

成功時true

public drawScene(scene: S3GLScene): void source

シーン全体を描画します。 プログラム設定や深度・カリングモードの設定、各種Uniformやモデルバインド・描画を自動実行します。

Params:

NameTypeAttributeDescription
scene S3GLScene

描画対象のシーン

Return:

void

public getGL(): WebGLRenderingContext source

WebGLコンテキストを取得します。

Return:

WebGLRenderingContext

WebGLコンテキスト

public isSetGL(): boolean source

WebGLコンテキストが設定されているかを確認します。

Return:

boolean

設定済みの場合true

public setCanvas(canvas: HTMLCanvasElement) source

描画対象となるCanvasを設定します。

Params:

NameTypeAttributeDescription
canvas HTMLCanvasElement

描画対象のCanvas要素

public setProgram(glprogram: S3GLProgram): boolean source

シェーダープログラムをアクティブにします。

Params:

NameTypeAttributeDescription
glprogram S3GLProgram

アクティブに設定するシェーダープログラム

Return:

boolean

設定が成功した場合true

Private Methods

private _bind(args: ...any): number source

モデル・uniforms・名前と値を与えた場合のデータバインド処理を実行します。

  • 2引数: シェーダ変数名とデータをバインド
  • 1引数: S3GLModelならメッシュ情報をバインド
  • 1引数: uniforms情報ならすべてのuniformsをバインド

Params:

NameTypeAttributeDescription
args ...any

バインド対象

Return:

number

0以上は成功、モデルの場合はIBOインデックス数(モデルの場合)

private _bindEnd() source

描画後処理として、バインド状態の解放やクリーンアップを行います。 (本実装では何もしていません。拡張用)

private _bindStart() source

描画前処理として、アクティブなテクスチャIDをリセットします。 通常は内部的に呼ばれます。

private _disposeObject(obj: Object): void source

不要になったリソースを解放します(未実装)。

Params:

NameTypeAttributeDescription
obj Object

解放対象のオブジェクト

Return:

void

private _getDummyTexture(): WebGLTexture source

1x1ピクセルのダミーテクスチャ(WebGLTexture)を取得します。 まだ生成されていない場合は新規作成します。テクスチャ未指定時の代替として利用されます。

Return:

WebGLTexture

ダミーテクスチャのWebGLTextureオブジェクト

private _setCullMode(): boolean source

WebGLのカリングモード(描画面の制御)を設定します。 カリングの有無・前面/背面/両面の設定も行います。

Return:

boolean

成功時true

private _setDepthMode(): boolean source

深度バッファのテストモードをWebGLで有効化します。 通常は自動的に呼ばれます。

Return:

boolean

成功時true