我正在使用從「開始安卓遊戲」採取的框架寫開放式gl 1.0的Android遊戲。Open GL ES - 紋理與阿爾法清除背景
我想繪製一些線條使用線條,其次是紋理多邊形。
但是,當我繪製紋理時,即使它們不在紋理塊附近,它也會首先繪製出線條的空白。
在長時間撞擊我的頭部之後,我發現如果我切換到沒有Alpha通道的圖像,它的工作原理並不會清除背景。但是如果我回到透明背景下的圖像,就會出現問題。
這是一張帶有一些截圖的圖片:http://imgbox.com/abxDKzSd 頂部的一個顯示了使用不帶alpha的圖像的屏幕,下面的圖像完全一樣,但圖像具有透明度。
- 我看到活動開始時的線閃爍起來很簡單,但從未之後
- 我使混合
- 我的紋理尺寸爲2(128×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
任何人都可以幫我找出它爲什麼這樣做?我無法讓它工作!
感謝您的建議! 不幸的是,它仍然無法正常工作。 聽起來像是正確的答案,但我不確定它是如何解釋沒有alpha工作的紋理好嗎? – 2013-03-23 23:08:54