7

過去にすべての画像を正常に読み込んだことがあり、OpenGL ES 2.0を使用しているため、画像を2の累乗にする必要はありません(正常に読み込まれていない画像がいくつかあります)。

問題のコードは次のとおりです。

Line 96: splashSheet = new Texture(Gdx.files.internal("test.png"));

これは私のエラーメッセージです:

    Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: test.png
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: test.png
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
    at com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)
    at com.badlogic.gdx.graphics.Texture.load(Texture.java:175)
    at com.badlogic.gdx.graphics.Texture.create(Texture.java:159)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:133)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:122)
    at com.panini.game.GameScreen.show(GameScreen.java:96)
    at com.badlogic.gdx.Game.setScreen(Game.java:59)
    at com.panini.game.Splash.render(Splash.java:29)
    at com.badlogic.gdx.Game.render(Game.java:46)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:190)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108)
Caused by: java.io.IOException: couldn't load pixmap
    at com.badlogic.gdx.graphics.g2d.Gdx2DPixmap.<init>(Gdx2DPixmap.java:57)
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:138)
    ... 11 more

これがこれを興味深い問題にしている理由です。このファイルをロードできますが、これをロードできません。前者は基本的に、私が使用したいものの単なるスクリーンショットです。私が提供した2番目の画像(これは機能しません)はオリジナルです。これはsplashSprites.pngと呼ばれますが、名前をtest.pngに変更して適切に参照しようとしましたが、それでも機能しないため、名前の問題などではないことは間違いありません。両方のファイルをそれぞれtest1.pngおよびtest2.pngという名前のアセットまたはbinディレクトリに配置した場合、test1.pngをロードするように要求した場合はコードが機能しますが、test2.pngをロードするように要求した場合は機能しません。 mファイルを間違った場所に置く。これらの2つが最も可能性の高い候補であるように見えましたが、私はそれらを除外しました。

最初の画像の再エクスポートなどを試しましたが、うまくいきませんでした(スクリーンショットを撮ることでうまくいきました。それが私がここにいる理由です)。私の推測では、画像の1つにあるアルファと関係がある可能性があります(これは、実際には2つとは異なる唯一のことであり、一方にはアルファがあり、もう一方にはアルファがないためです)が、他の画像をロードできたため、それはありそうにありません。アルファを持っていたテクスチャ。私は本当に困惑しています。

前もって感謝します。

4

2 に答える 2

7

私は答えを見つけました。OS Xでプレビューを使用してスプライトシートを8ビット深度に変換した後、問題が解消されたことがわかったため、LibGDXは16ビットpngをサポートしていないようです(これは正しいですか?)。

LibGDXをアップグレードするためのアドバイスをくれたPTに感謝します。そうすることで、次のエラーメッセージが表示されます。

Caused by: java.io.IOException: couldn't load pixmap 8bit only
于 2013-01-05T21:52:41.840 に答える
4

画像に対してpngcrushを実行して、より一般的なPNG形式にします。

このスクリーンショットは、libGDXフォーラムのスクリーンショットコードで生成されていますか?私もそれを使用しましたが、結果のPNGが膨大になるという問題があり、それらの読み込み/編集にも問題があったと思います。とにかくpngcrush私のために問題を修正しました。

pngcheckツールを使用すると、2つの画像の違いを特定できる場合があります。

libGDXソースを調べてみると、この最近(11日前)にlibGDXイメージローダーが変更されていることがわかります:https ://github.com/libgdx/libgdx/commit/4fac29aef94e3afafdd47d71e60faf256fa171b0 (IOExceptionには実際の内容に関する詳細情報が含まれているようですうまくいかなかった)、それであなたはlibGDXナイトリーに対して走ってみるかもしれませんか?

于 2013-01-05T19:42:31.960 に答える