Skip to content

プログラムとシェーダ

sapphire-al2o3 edited this page Jul 21, 2014 · 8 revisions

attachShader

プログラムオブジェクトにシェーダオブジェクトをアタッチする。

void attachShader(WebGLProgram program, WebGLShader shader)
  • program: シェーダオブジェクトを指定する。
  • shader: アタッチされるためのシェーダオブジェクトを指定する。

bindAttribLocation

頂点属性を関連付ける。

void bindAttribLocation(WebGLProgram program, uint index, string name)
  • program: プログラムオブジェクトを指定する。
  • index: 頂点属性のインデックスを指定する。
  • name: 頂点シェーダでの名前を指定する。

compileShader

シェーダオブジェクトをコンパイルする。

void compileShader(WebGLShader shader)
  • shader: コンパイルされるシェーダオブジェクトを指定する。

サンプルコード

// フラグメントシェーダをコンパイルする
var shader = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(shader, str);
gl.compileShader(shader);

createProgram

プログラムオブジェクトを生成する。

WebGLProgram createProgram()
  • return: 空のプロブラムオブジェクトを返す。エラーが起きた場合0が返される。

createShader

シェーダオブジェクトを生成する。

WebGLShader createShader(enum type)
  • type: VERTEX_SHADER, FRAGMENT_SHADER のいずれかを指定する。
  • return: シェーダオブジェクトを返す。

deleteProgram

プログラムオブジェクトを削除する。

void deleteProgram(WebGLProgram program)
  • program: 削除するプログラムオブジェクトを指定する。

deleteShader

シェーダオブジェクトを削除する。

void deleteShader(WebGLShader shader)
  • shader: 削除するシェーダオブジェクトを指定する。

detachShader

プログラムオブジェクトからシェーダオブジェクトをデタッチする。

void detachShader(WebGLProgram program, WebGLShader shader)
  • program: プログラムオブジェクトを指定する。
  • shader: シェーダオブジェクトを指定する。

getAttachedShaders

プログラムオブジェクトにアタッチされたシェーダオブジェクトを取得する。

Object[] getAttachedShaders(WebGLProgram program)
  • program: プログラムオブジェクトを指定する。
  • return: シェーダオブジェクトの配列を返す。

getProgramParameter

プロブラムオブジェクトのパラメータを取得する。OpenGL ES 2.0 の glGetProgramiv に相当する。

any getProgramParameter(WebGLProgram program, enum pname)
  • program: プログラムオブジェクトを指定する。
  • pname: DELETE_STATUS, LINK_STATUS, VALIDATE_STATUS, ATTACHED_SHADERS, ACTIVE_ATTRIBUTES, ACTIVE_UNIFORMS のいずれかの値を指定する。
  • return: 要求されたパラメータを返す。

getProgramInfoLog

プログラムオブジェクトのログを取得する。

string getProgramInfoLog(WebGLProgram program)
  • program: プログラムオブジェクトを指定する。
  • return: ログを返す。

getShaderParameter

any getShaderParameter(WebGLShader shader, enum pname)
  • shader: シェーダオブジェクトを指定する。
  • pname: SHADER_TYPE, DELETE_STATUS, COMPILE_STATUS のいずれかの値を指定する。
  • return: 要求されたパラメータを返す。

getShaderInfoLog

シェーダオブジェクトをコンパイルした際のログを取得する。

string getShaderInfoLog(WebGLShader shader)
  • shader: プログラムオブジェクトを指定する。
  • return: ログを返す。

getShaderSource

シェーダソースを取得する。

string getShaderSource(WebGLShader shader)
  • shader: シェーダオブジェクトを指定する。
  • return: シェーダソースを返す。

isProgram

プログラムオブジェクトか判定する。

bool isProgram(WebGLProgram program)
  • program: プログラムオブジェクトかもしれない変数を指定する。
  • return: プログラムオブジェクトなら true を返す。

isShader

シェーダオブジェクトか判定する。

bool isShader(WebGLShader shader)
  • shader: シェーダオブジェクトかもしれない変数を指定する。
  • return: シェーダオブジェクトなら true を返す。

linkProgram

プログラムオブジェクトにアタッチされている頂点シェーダ、フラグメントシェーダをリンクする。

void linkProgram(WebGLProgram program)
  • program: プログラムオブジェクトを指定する。

成功したかどうかはgetProgramParameterLINK_STATUSを指定して判定する。 エラーメッセージはgetProgramInfoLogで取得する。

shaderSource

シェーダオブジェクトにシェーダソースを設定する。

void shaderSource(WebGLShader shader, string source)
  • shader: シェーダオブジェクトを指定する。
  • source: シェーダソースを指定する。

useProgram

プログラムオブジェクトを有効化する。

void useProgram(WebGLProgram program)
  • program: プログラムオブジェクトを指定する。

validateProgram

プログラムオブジェクトを検証する。

void validateProgram(WebGLProgram program)
  • program: プログラムオブジェクトを指定する。