import GLEnv from "./GLEnv"; import { Vector2, Vector3, Vector4, Matrix } from "./GeoMath"; /** * マテリアル */ declare class Material { /** * @param glenv - WebGL 環境 * @param vs_code - 頂点シェーダのソースコード * @param fs_code - フラグメントシェーダのソースコード */ constructor(glenv: GLEnv, vs_code: string, fs_code: string); /** * シェーダをリンク * * @param vs - 頂点シェーダ * @param fs - フラグメントシェーダ * * @return リンクされたプログラムオブジェクト * * @throws {Error} リンクエラー */ private _link_shaders; /** * 頂点属性情報を作成 * * @return 頂点属性名前とロケーションの配列 */ private _create_vertex_attribs; /** * uniform 変数のロケーション辞書を作成 * * @return ロケーション辞書 */ private _create_uniform_location; /** */ protected _setRenderId(id: number): void; /** * リソースを破棄 */ dispose(): void; /** * プログラムを束縛 */ bindProgram(): void; /** * 真偽値パラメータを設定 * * @param name - 変数名 * @param value - 真偽値 */ setBoolean(name: string, value: boolean): void; /** * 整数パラメータを設定 * * @param name - 変数名 * @param value - 整数値 */ setInteger(name: string, value: number): void; /** * 整数パラメータを設定 * * @param name - 変数名 * @param value - 整数値 */ setIntegerArray(name: string, value: Int32Array | number[]): void; /** * 整数ベクトルパラメータを設定 * * @param name - 変数名 * @param value - 整数配列 */ setIVector3(name: string, value: Int32List): void; /** * 整数ベクトルパラメータを設定 * * @param name - 変数名 * @param value - 整数配列 */ setIVector3Array(name: string, value: Int32Array | number[]): void; /** * float パラメータを設定 * * @param name 変数名 * @param value float 値 */ setFloat(name: string, value: number): void; /** * 2次ベクトルパラメータを設定 * * @param name - 変数名 * @param value - 2次ベクトル */ setVector2(name: string, value: Vector2): void; /** * 2次ベクトルパラメータを設定 * * @param name - 変数名 * @param value - 2次ベクトル */ setVector2Array(name: string, value: Float32Array | number[]): void; /** * 3次ベクトルパラメータを設定 * * @param name - 変数名 * @param value - 3次ベクトル */ setVector3(name: string, value: Vector3): void; /** * 4次ベクトルパラメータを設定 * * @param name - 変数名 * @param value - 4次ベクトル */ setVector4(name: string, value: Vector4): void; /** * 行列パラメータを設定 * * @param name - 変数名 * @param value - 行列 */ setMatrix(name: string, value: Matrix): void; /** * 頂点属性データを束縛 * * @param mesh_attribs - メッシュ側の頂点属性データ */ bindVertexAttribs(mesh_attribs: AttributeBindInfoDict): void; /** * テクスチャをバインド * * 注意: 現行テクスチャ (Active Texture) も変更される。 * * @param unit - テクスチャユニット番号 * @param texture - テクスチャオブジェクト */ bindTexture2D(unit: number, texture: WebGLTexture): void; protected readonly glenv: GLEnv; private readonly _program; private readonly _vertex_attribs; private readonly _uniform_location; } /** * 頂点属性の束縛情報 * * @see [[AttribDataDict]], [[Material.bindVertexAttribs]] */ export interface AttributeBindInfo { buffer: WebGLBuffer; num_components: number; component_type: GLenum; normalized: boolean; byte_stride: number; byte_offset: number; } /** * 辞書: 頂点属性名 -> 頂点属性の束縛情報 * * @see [[Material.bindVertexAttribs]] */ export interface AttributeBindInfoDict { [name: string]: AttributeBindInfo | undefined; } export default Material; //# sourceMappingURL=Material.d.ts.map