「Androidゲームの開始」から取得したフレームワークを使用して、OpenGLES1.0でAndroidゲームを作成しています。
ラインストリップとそれに続くテクスチャポリゴンを使用していくつかの線を描画しようとしています。
しかし、何が起こっているのかというと、テクスチャを描画すると、テクスチャブロックの近くにない場合でも、最初に描画された線が空白になります。
長い間頭をぶつけた後、アルファチャネルのない画像に切り替えると、それが機能し、背景がクリアされないことを発見しました。しかし、背景を透明にして画像に戻ると、問題が発生します。
これがいくつかのスクリーンショットの写真です:http://imgbox.com/abxDKzSd 上の写真はアルファなしの画像を使用した画面を示しています。下の写真はまったく同じですが、画像は透明です。
- アクティビティの開始時に線が非常に短時間点滅するのがわかりますが、その後は決して表示されません
- ブレンディングを有効にしています
- 私のテクスチャの寸法は2の累乗(128 x 32)です
- 呼び出しのたびにglエラーがチェックされ、何も表示されません
- Kindle Fire HDで直接実行していますが、エミュレーターはこれでまったく動作しないようです。
プリミティブをレンダリングしているコードのスニペットと、それに続くテクスチャブロックを次に示します。
GL10 gl = glGraphics.getGL();
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glEnable(GL10.GL_TEXTURE_2D);
m_guiCam.setViewportAndMatrices();
// draw the lines
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glLineWidth(15.0f);
m_vertices.position(0);
gl.glVertexPointer(2, GL10.GL_FLOAT, VERTEX_SIZE, m_vertices);
gl.glDrawArrays(GL10.GL_LINE_STRIP, 0, m_numVerts);
// draw textures
m_guiCam.setViewportAndMatrices();
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
m_batcher.beginBatch(Assets.mfTex);
TextureRegion keyFrame = Assets.mfAnim.getKeyFrame(0.0f, Animation.ANIMATION_LOOPING);
m_batcher.drawSprite(250, 250, 32, 32, keyFrame);
m_batcher.endBatch();
gl.glDisable(GL10.GL_BLEND);
私は管理できる最小の例を作成しましたが、それでも問題が発生します。https ://docs.google.com/folder/d/0Bz7e5tdnz97Id21XZkJoQ005NlU/edit?usp=sharingから入手できます。
誰かが私がこれをしている理由を理解するのを手伝ってもらえますか?私はそれを動作させることができません!