2012-06-11 6 views
11

私はlibGDXによって雨滴のチュートリアルプロジェクトを作った。しかし、私はそれをエミュレータに展開しようとすると、画像が2の累乗ではないというエラーが出ます。しかし、私はGIMPを使って48X48になるように画像のサイズを変更しました。私は、必ずしも2の累乗ではない画像を追加することが可能であることを確実にするために、いくつかのコードを追加したと思いますか?イメージは2の累乗ではありませんか?

誰でもこの問題を解決する方法を知っていますか?それを2つの力にするのはちょっと制限されていますね。私はチュートリアルに非常によく従った!だからここからどこに行くのか分からない。 libGDXのNoob。

LogCatダンプ:

06-11 00:22:50.942: W/dalvikvm(545): threadid=11: thread exiting with uncaught exception (group=0x409c01f8) 
06-11 00:22:50.952: E/AndroidRuntime(545): FATAL EXCEPTION: GLThread 72 
06-11 00:22:50.952: E/AndroidRuntime(545): com.badlogic.gdx.utils.GdxRuntimeException: Texture width and height must be powers of two: 48x48 
06-11 00:22:50.952: E/AndroidRuntime(545): at com.badlogic.gdx.graphics.Texture.uploadImageData(Texture.java:197) 
06-11 00:22:50.952: E/AndroidRuntime(545): at com.badlogic.gdx.graphics.Texture.load(Texture.java:179) 
06-11 00:22:50.952: E/AndroidRuntime(545): at com.badlogic.gdx.graphics.Texture.create(Texture.java:159) 
06-11 00:22:50.952: E/AndroidRuntime(545): at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:133) 
06-11 00:22:50.952: E/AndroidRuntime(545): at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:122) 
06-11 00:22:50.952: E/AndroidRuntime(545): at com.badlogic.drop.Drop.create(Drop.java:38) 
06-11 00:22:50.952: E/AndroidRuntime(545): at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:292) 
06-11 00:22:50.952: E/AndroidRuntime(545): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1455) 
06-11 00:22:50.952: E/AndroidRuntime(545): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1216) 
06-11 00:22:51.041: I/AndroidInput(545): sensor listener tear down 
06-11 00:22:51.041: I/AndroidGraphics(545): Managed meshes/app: { } 
06-11 00:22:51.041: I/AndroidGraphics(545): Managed textures/app: { } 
06-11 00:22:51.041: I/AndroidGraphics(545): Managed shaders/app: { } 
06-11 00:22:51.041: I/AndroidGraphics(545): Managed buffers/app: { } 
+2

32および64は2の累乗です。 48はありません。 – duskwuff

+1

このチュートリアルでは、48x48に変更することができると述べていました。私は彼がそれが壊れないことを保証するためにそこにいくつかのコードを追加したと思う。それをする方法はありますか?画像が2の累乗である必要はありませんので、私が言ったように、私は彼がチュートリアルで示唆したように48X48にイメージのサイズを変更しました...奇妙な:S – BigBug

+0

チュートリアルへのリンク? – Junuxx

答えて

29

48×48が2のべき乗ではありません。このアプリケーションでは、テキストに記載されているようにOpenGL ES 2.0が必要です。標準エミュレータはOpenGL ES 1.0のみを実行します。イメージを32x32に再スケーリングすると、OpenGL ES 1.xでもすべてが正常に動作します。

OpenGL ESアプリケーションのテストにエミュレータを使用しないことをお勧めします。代わりに実際のデバイスを使用してください。

+0

良い答え。これは私が作業しているアプリケーションがデバイスではなくエミュレータで実行されるため、ナットを運転していました。ありがとう!また、素晴らしいフレームワークのおい!良い仕事を続けてください! – LoveMeSomeCode

18

あなたはcreate()メソッドでは、あなたのゲームクラスに次のコード行を設定することにより、2つの要件の電源を強制するからそれを止めることができます。これは私のために働い

Texture.setEnforcePotImages(false); 
+0

ありがとう - これは便利な解決策です。OpenGL 1.0をサポートしているターゲットプラットフォームでも、これを使用しても安全ですか?私は2Dゲームを開発しているので、このソリューションを好むので、OpenGLの直交描画モードのみを使用しています。多くの場合、2の累乗を持つすべてのImageディメンションに制限があるように見えます。 –

+1

違いは分かりませんが、これを動作させるために書かなければなりませんでした: 'GLTexture.setEnforcePotImages(false);' –

0

すべて「GL10」に変更 com.badlogic.gdx.graphics.GL20からインポートされた「com.badlogic.gdx.graphics.GL10」から「GL20」にインポートされました。

関連する問題