toge's diary

コンピュータ関連の趣味をつらつらと。

行列で泣いたり笑ったり

いままでさんざん苦しまれてきたOpenGLの行列計算。なんかこんな感じのコードになってしまった。
Hardwareを使わないで計算しちゃっているところがダメダメだが、割と良い具合になりました。
まだscaleがないんだけど。

const Vector pitch  = camera.pitch();
const float  height = pitch.x() * 2000.f; // CONST
{
  GLMatrixYZ mat;
  mat.rotateY(pitch);
  mat.translateZ(-height);
  mat.load();
}

{
  GLMatrixXY mat;
  mat.translateY(height / 3);
  mat.rotateYAxis(camera.yaw());
  mat.translate(-camera.frameSize() / 2 - camera.adjust() - camera.shake());
  mat.apply();
}