C-WebGL: GLES2エミュレーションの実装(trivialケース)

まずは何も変換が要らない奴を実装していく。 glEnable
とか glViewport
のような、対応するWebGLメソッドを呼べば良いだけのやつ。

enable
disable
hint
など
glEnable
と glDisable
は規格書で定義されていない。
Section 5の関数は全てtrivialに変換できる。

Section 2
意外とtrivialでないものが多い。逆に、ArrayでないAttributeはtrivialに変換できる。
glError
はグルー側のエラーとマージしてやる必要がある都合で専用のロジックが必要になる。このため、単にGLESバックエンドに尋いて終わりということにはできない。
AttribPointer
類や描画コマンドは、Client side arrayが使われそうになったら一旦テンポラリなバッファを確保して転送してやる必要があるのでtrivialには実装できない。
Uniform
類は、WebGLではUniform Locationが専用のオブジェクトになった関係でtrivialには実装できない。専用のキャッシュを持つ必要があるなど結構ややこしい実装が必要。
Program
類はOpenGL的なnameとWebGL側のオブジェクトの変換が必要。

Section 3
Texture
類はOpenGL的なnameとWebGL側のオブジェクトの変換が必要。

Section 4
Framebuffer
と Renderbuffer
はOpenGL的なnameとWebGL側のオブジェクトの変換が必要。
glReadPixels
は行けそうに見えるが、C-WebGLでは全てのバッファは長さを明示的に指定する必要があるため、グルー側でバッファの長さを計算してやる必要がある。 ... これステートを追跡しないでできるのかな。。?

Section 6
Section 6 はクエリなので全て変換が必要。。よってTrivialなものは無い。