Kotlin 1.2 が現れ始めた時期で今更ながら、 Kotlin 1.1 で JavaScript から WebGL を書いてみました。 型があるのはいい一方、やはり OpenGL 系は C 言語系の手続き系言語的な関数でもって動作させるので、ライブラリを使うのがいいのかもしれません。
プロジェクト全体のソースコードはこちらから。今回は JavaScript モジュール定義に対しては AMD を使ってみました。
まず、 canvas
を対象に描画するので HTML のロードを待たねばなりませんので、 web/main.js ではそのような処理を行っています。
3 次元ベクトルと 4 次元正方行列は、それぞれ data class
として src/main/kotlin/Vector3.kt と src/main/kotlin/Matrix4x4.kt に切り出しています。
残りの、本体となるコードは src/main/kotlin/main.kt にあります。 単純に wgld.org を Kotlin に移植したような見た目になっていますが、気を付けるべき箇所がいくつかありました。
- 型を生かすようにキャストや Null の扱いを丁寧に行う
- (単精度の場合)
Float32Array
なるクラスを、 WebGL の関数に対して与える - GLSL 等の識別子は型チェックが利かない(当然だが)
- 生 WebGL ではオブジェクト指向的には書けない