イントロダクション
LWJGL GitBookのChapterを写経しながら理解していきます。Git(ソース)はこちら。。。
前回は、Chapter7-2をやりました。今回は画面を表示するときの「カメラ」に付いてやります。
ゲームで表示されている領域を変えたり、ズームアップしたりするアレです。
コードを読む(Read Code)
今までに見て来た部分は割愛します。
- Chapter1[外枠の表示のみ]
- Chapter2-1〜クラスの構成〜
- Chapter2-2〜インターフェースの使い方と詳細〜
- Chapter2-3〜GameEngineクラス(サンプルクラス)〜/li>
- Chapter2-4〜Windowクラス(サンプルクラス)〜
- Chapter3〜描画処理を読む〜
- Chapter4〜シェーダについて〜
- Chapter5-1〜レンダリングについて〜
- Chapter5-2〜レンダリング詳細〜
- Chapter6〜Projection(投影)〜
- Chapter7-1〜Cubeを作る〜
- Chapter7-2〜Texture〜
今回の追加ソース
- MouseInput
- Camera
大きな修正部分
- Transformation#getWorldMatrix()を修正していました。
- DummyGame#init()
- Renderer#render()
写経後に起動するアプリ
3Dモデルを動かす! #PGボックス pic.twitter.com/NSo1EMcCsN
— たくのじ (@java_takunoji) October 31, 2018
*************************************
*************************************
改めてソースを読む
Main: DummyGame, GameEngineをインスタンス化してGameEngine#start()を実行
DummyGame: Renderer, Camera, Vector3fをインスタンス化して各フィールドに設定
GameEngine:
- スレッドを立ち上げ(new Thread(this))、フィールドにWindow, MounseInput, DummyGameのインスタンスを設定する
- OSの種類に応じて、GameEngine#run() or GameEngine#start()を切り替えて実行する
- フィールドにセットした各クラスの初期処理(init())を起動する
- gameLoopを回しながらinput, renderを繰り返し実行する
大雑把にこんな感じの処理をしていました。
今回のキモ
ズバリ、カメラワークでしょう!そして、因縁の三角関数!!
そして、GitBookの説明を読んでもよくわからなかったので、デバッカーを作って実行
入力があったときのみコンソールに出力する様に処理を追加→欠陥品でした。。。1回目しか出力しません。。。
出力結果
とりあえずはここまでやったのだけど、入力した値が逆方向に向いている(-0.05)こと以外はわからなかった次第でございます。
続きはまた後日。
でわでわ。。。