Eclipse アプリ作成 Lv5〜惨敗:CubeにTextureを貼る〜

参照するドキュメント(LWJGL-GitBook)

参照コード:Chapter7-1(Gitです)

イントロダクション

前回、なんとか以下のように各Cube毎に「高さ」を与えてやることができました。

 

しかし、ぱっと見では「よくわからん」のが現状です。なのでこいつを少しはわかりやすくするために「思いやり」を発揮します。

思いやりその1

実は上記のキャプチャは以下のものを示しています(そのつもりです)。

  1. Cubeの「高さ」は家計簿の支出金額を示しています。
  2.  7 x 5のマスは1ヶ月を示しています(マスは1日)。

「全然わかんねぇよ!」と怒られそうですが、現状はそんなもんでしょう。

そんなわけで試行錯誤してみます。

  1. 手前の面に(月)〜(日)をつけてみる
  2. 左の面に1週〜5週までを示す文言を表示する

とりあえずはこれで行ってみようと思います。

テクスチャを貼る

<2018/11/05>  /** 戦闘中 */

今日の目玉です。ですが、今日はテクスチャを退治することができず。。。

以下のようなエラーが出てしまい、解決に至らず。。。と行ったところです。


Warning validating Shader code: Validation Failed: No vertex array object bound.

java.lang.NullPointerException
at de.matthiasmann.twl.utils.PNGDecoder.readFully(PNGDecoder.java:802)
at de.matthiasmann.twl.utils.PNGDecoder.(PNGDecoder.java:112)
at zenryokuservice.gui.lwjgl.kakeibo.engine.graph.Texture.loadTexture(Texture.java:31)
at zenryokuservice.gui.lwjgl.kakeibo.engine.graph.Texture.(Texture.java:14)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.putOnTexturePlate(DummyGame.java:109)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.init(DummyGame.java:81)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.init(GameEngine.java:48)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.run(GameEngine.java:36)
at java.lang.Thread.run(Thread.java:748)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.start(GameEngine.java:27)
at zenryokuservice.gui.lwjgl.kakeibo.game.Main.main(Main.java:13)
java.lang.NullPointerException
at de.matthiasmann.twl.utils.PNGDecoder.readFully(PNGDecoder.java:802)
at de.matthiasmann.twl.utils.PNGDecoder.(PNGDecoder.java:112)
at zenryokuservice.gui.lwjgl.kakeibo.engine.graph.Texture.loadTexture(Texture.java:31)
at zenryokuservice.gui.lwjgl.kakeibo.engine.graph.Texture.(Texture.java:14)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.putOnTexturePlate(DummyGame.java:109)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.init(DummyGame.java:81)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.init(GameEngine.java:48)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.run(GameEngine.java:36)
at java.lang.Thread.run(Thread.java:748)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.start(GameEngine.java:27)
at zenryokuservice.gui.lwjgl.kakeibo.game.Main.main(Main.java:13)
java.lang.ArrayIndexOutOfBoundsException: 7
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.putOnTexturePlate(DummyGame.java:109)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.init(DummyGame.java:81)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.init(GameEngine.java:48)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.run(GameEngine.java:36)
at java.lang.Thread.run(Thread.java:748)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.start(GameEngine.java:27)
at zenryokuservice.gui.lwjgl.kakeibo.game.Main.main(Main.java:13)
java.lang.NullPointerException
at zenryokuservice.gui.lwjgl.kakeibo.engine.graph.Mesh.render(Mesh.java:89)
at zenryokuservice.gui.lwjgl.kakeibo.game.Renderer.render(Renderer.java:70)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.render(DummyGame.java:278)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.render(GameEngine.java:100)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.gameLoop(GameEngine.java:68)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.run(GameEngine.java:37)
at java.lang.Thread.run(Thread.java:748)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.start(GameEngine.java:27)
at zenryokuservice.gui.lwjgl.kakeibo.game.Main.main(Main.java:13)
java.lang.NullPointerException
at zenryokuservice.gui.lwjgl.kakeibo.engine.graph.Mesh.cleanUp(Mesh.java:114)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.cleanup(DummyGame.java:285)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.cleanup(GameEngine.java:77)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.run(GameEngine.java:41)
at java.lang.Thread.run(Thread.java:748)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.start(GameEngine.java:27)
at zenryokuservice.gui.lwjgl.kakeibo.game.Main.main(Main.java:13)


<2018/11/06>

今日も敗北を喫してしまいました。

だけど、NullPointerExceptionは解決しました。

原因は、参照しているファイルが間違っていたことです。実装したコード

そして、Meshクラス1つで2種類のMeshクラスを管理しようとしたりと。。。つまづきました。

そして今日は、ここまで来ました。

本当は、Cubeの手前に「月〜日」のテクスチャをつける予定だったのですが。。。なんでこうなったのかが、まるでわかりません。→敗北。。。

修正したコードは、

  1. DummyGame
  2. GameItem
  3. Renderer

上記3クラスです。そして、新たに追加したのが「TexturedMesh」クラスです。

<2018/11/07>

色々試したけど、次の機会にリベンジを決める方向に移行します。。。

中途半端にImageが読み込めているのが悔しいさを倍増させますな。。。「月」の一部が表示されている感じに見えます。