2010年10月10日日曜日

ディスプレイの表示

まずは、ディスプレイの設定と作成です。

object ACT3D
@throws(classOf[LWJGLException])
def init {
  val mode = Display.getAvailableDisplayModes.find(m => m.getWidth == width && m.getHeight == height) match {
    case Some(m) => m
    case None => {
      println("ウィンドウサイズが正しくありません。")
      throw new Exception
    }
  }
  Display.setDisplayMode(mode)
  Display.setTitle(title)
  Display.setVSyncEnabled(true)
  Display.setSwapInterval(1)
  Display.create
}

setDisplayModeのところですが、利用可能なディスプレイモードから指定した横幅、縦幅のディスプレイモードを取得し、それを設定をしています。
ディスプレイモードの設定以外はやらなくても動きます。垂直同期は有効にするとちらつきがなくなるそうです。

次にディスプレイの更新をします。

object ACT3D
@throws(classOf[LWJGLException])
def run {
  while (running) {
    Display.update
    if (Display.isCloseRequested) {
      running = false
    } else {
      Display.sync(fps)
    }
  }
}

これでクローズがリクエストされるまで指定のFPSでディスプレイが更新されます。
最後に後処理です。ACT3Dのcleanupにこの一行を加えます。

Display.destroy

これでディスプレイが表示できるはずです。
実行するときの注意ですが、VM引数に-Djava.library.path="ネイティブライブラリへのパス"を忘れないようにしましょう。

次回は、ディスプレイに何か表示しようと思います。

0 件のコメント:

コメントを投稿