UIパーツを追加
UIパーツをいくつか追加した。
・スライダー
・水平・垂直スクロールバー
・スクロールビュー
スクロールビューはリストボックスの中身の表示等、スクロール可能な領域で使用する予定。表示領域のクリッピングとスクロールの処理は一応で動くようになった。今のところ、クリッピング範囲、スクロール値のどちらもシェーダのユニフォーム変数にして、シェーダ内でそれぞれの処理を行うようにしている。
現状の実装では、表示画面に対して全てのUIパーツを毎フレーム1回ずつ描く処理になっている (各パーツのテクスチャを描くところまでは、再描画が必要な時まで書き換えない処理になっている)。後々、UI用のオフスクリーンバッファを1枚用意して、変更点だけ再描画するような処理に書き換えた方が良いのかもしれない。今のままでも、ゲーム内のちょっとしたUIであれば実用に耐えるのではないかと考えている。
マウスイベントも、よく使いそうなものは実装した。まだmouseenter, mouseleaveの処理で、UIパーツの配置の前後関係によっては不具合が生じるケースが残ってしまっている。これは頭の中では再設計ができているので、コードを書き換えれば直せそう。