遊んでみる3〜全部テクスチャにする〜ツイートイントロダクションここのところ負け越しの1引分けでしたが、ついにやっつけました。最終的に以下の様なコードができました。いじったのは「DummyGame」クラスです。ポイントは以下になります。}上記のポイントを抑えサイドコードを直したところうまくいきました。GitBookのChapterを写経しながら理解していきます。Git(ソース)はこちら。前回は、Chapter3をやりました。今回は、前回やったプログラムの続きです。前回はプログラムの全体的な流れを見ていきましたので、今回は詳細部分描画処理を見ていきます、前回示した目玉の部分です。program.https://ahbejarano.gitbook.io/lwjglgamedev/chapter4シェーダについてShaderProgramクラスについて学びます。このクラスはRendererクラスから呼ばれていますので、そこから追いかけます。shaderProgram.link();LWJGLフレームワークの部品GL20のメソッド「glCreateProgram」を呼び出しています。}ここでの注意点は、赤字のメソッドがメソッド内のコードだけでは「どのクラスのメソッドかわからない」と言うことです。static」しているので呼び出すことが可能です。org.lwjgl.opengl.GL20.*;そして、参照しているドキュメントには以下の様な記述があります。OpenGLプログラム(空のオブジェクト)を作成する:glCreateProgram頂点とフラグメントのシェーダコードファイルをロードします。シェーダを定義します:glCreateShaderSourceシェーダをコンパイル(実行できる様にします。上で定義した時のIDでコンパイルする様です。:glCompileShader各シェーダーについて、新しいシェーダープログラムを作成し、そのタイプ(頂点、フラグメント)を指定します:glCreateShaderSourceシェーダをコンパイルします。:glCompileShaderシェーダをプログラムに接続します。:glAttachShaderプログラムをリンクします。1.0);}シェーダプログラムに関しては触れていなかったので、ちょいと保留します。今回は、ここまでにしておきます。chapter3〜プロジェクトの起動エラー〜ツイートトラブルシューティングこの記事は、chapter3を始めるにあたり画面の起動でエラーが出てしまった時のメモとして記載します。zenryokuservice.gui.lwjgl.tutoriral.gitbook.chapter4.game.Main.main(Main.java:13)上の様なエラーログが出力された場合です。これは上の赤字の部分から追いかけると原因がわかります。}上記の赤い部分がエラーの出ている行になります。コードを追いかけてみると「in」をScannerで読み取るための準備(Scannerをインスタンス化)をしているところでエラーが起きていますので、「in」「"UTF-8"」が怪しいと睨みます。「"UTF-8」は固定値(定数)なので犯人ではなさそうです。次に、「in」を追跡します。「in」はInputStream=>ClassクラスのメソッドgetResourceAsStreamを呼び出しているのでそいつを調べます。引数にある「リソース(ファイル)」を取得するメソッドですので返却する値はInputStreamです。※ここら辺について記載した記事はこちらです。標準入力(System.in=>InputStream)についてSystemクラスについて標準入力、ファイル入力などの読み込み最近ではScannerを使用する様ですが、リンク先を理解してしまえばScannerはすぐに理解できます。「古い→技術的な基盤になっている」と言うことです。設計を始める〜3.機能概要〜ツイートイントロダクション前回は、機能の実装イメージを絵にしました。一般的に使えません...上部右側にあるMainはメインメソッドを示していて四角で囲ってる処理を行います。Checkはボタン押下時の処理を示しています。次は実現する為の手法を考えます。設計を始める〜2.機能イメージ〜ツイートイントロダクション前回は、作るアプリの画面イメージを設計しました。次は実現したい機能イメージを作ります。結論からゲーム感覚で、家計簿をつけるアプリを作る。キーボード入力的な事は極力避けたい...Readボタンでレシートからデータを取得するスケジュール等はグーグルカレンダーから引っ張るCheckボタン押して画面にデータを表示する機能としてはこんな感じです。Readボタン押下時の処理フロー図はこんな感じちゃんとしたドキュメントには出来ないが、個人用としてはこれで十分!使っている携帯アプリはハッシュタグ#PGボックスを見てください。Lv1〜JOGLでハローワールド〜ツイートイントロダクション前回、JOGLのインストールとサンプルコードを実行しました。実行して動いたのを確認したので、今度は内容を理解します。read)メインメソッドJavaのプログラムは必ずメインメソッドから始まります。メインメソッドからみていきます。end.ステップメインメソッドの起動〜GL2の生成:GLProfileを使用してGL2クラスを生成します。(2D描画に使用します)GLCapabilitiesを生成します。これはGLCanvasの生成に使用するクラスのようです。GLCanvasクラスを生成し、今回作成したクラス「MultiTaskManager」のインスタンスを作成して、Canvasに追加します。(Event登録します)、そして、表示するサイズをGLCanvasに設定します。view.重要なとこここで重要なのは、〜GLの部品を最終的にJFrameに設定しているところです。Swingでの描画(GUI)は土台にJFrame(Frame)を使用しています(他にはJDialoなど)。土台オーバーライドメソッド(GLEventListenerのメソッド)GLEventListenerインターフェースを実装(オーバーライド)する事で描画処理(display())を起動するときにその内容を定義(実装)できます。実際の処理はサンプルコードを見ればわかるように、「display」メソッドに実装してある内容が処理の結果として表示されています。Worldの「H」のみが描画されています。そのように実装しているので。自分でいじってみようと思うならまず初めに「」メソッドからいじって見ると良いでしょう。Java〜JOGLで3Dモデリング?〜ツイートイントロダクション(Introduction)前回、JOGLのインストールをして開発の準備を行いました。申し訳ないが参考になりませんでした。こちらを参考にします。JOGL)JOGLを使用して実装を行います。Swingなど初めてですって方も問題ありません。自分も初めての実装です(笑)。参考にしたPDFには問題が載っています。問題>"H"は描いたけれどもう1つ"W"を描きたいのですがどの用に描いたら良いでしょうか?描いてください。used?次回(Next)作成したコードを解析します。Eclipse〜ツイートイントロダクションゲームというより、タスク・スケジュール・ロードマップ管理アプリケーションの作成を行います。(Java版のOpenGL)です。土台になるのはSwingです。画面の外側はSwingで内側(コンポーネント)はJOGLで表示します。Install)こちらのページを参考にやります。Eclipse)gluegenrt.jarjogl-all.jargluegen-rt-natives-macXXX.jarjogl-all-natives-macXXXついでなので、LWJGLのファイルもビルドパスを通します。JOGLはこのフレームワークに同梱されています。1.Eclipseの設定を開きます。2.Java-BuildPath-UserLibralyを開きます。3.ライブラリを作成します。(Newボタンを押下)そして、Editを押下してライブラリにLWJGLのファイルを全部追加します。※頭に「lwjgl-」がついているファイル全てです。実行した時のキャプチャ次回(Next)実際に描画をやってみます。実際には2D描画です。OpenGL〜メモJOGL開発メモ〜ツイートイントロダクションUnity、UE4などゲーム開発のツールを検討したけど、自分の計画的に表題のJOGLLWJGLを使用するのが適当と判断しました。※結局Eclipseで開発することにしたので、LWJGLで実装することにしました。Ecllipse.理由その1LWJGLを含め、フレームワークを使用するという事は、そのフレームワークのルールを覚える必要がある。これは汎用的に使える知識ではないのと、もう少し低レベルのAPIを使うため、だったのですがJOGLだと勉強量が多すぎるのでLWJGLを使うことにしました。その2java.swingとの連携を考慮した。フレームワーク経由だとそのフレームワークで指定する表示方法に依存するため。LWJGLはSwingとの親和性が高いので問題なしになりました。