2011-06-12 78 views
0

試圖繪製一個實心的圓柱體並不能達到我想要的效果。這裏是我的代碼:Android/OpenGL ES:繪製圖元不會做任何事

public static void solidCylinder(GL10 gl, float radius, float height, int slices, int steps) 
{ 
    float zStep = height/steps; 
    float alphaStep = (float)((2*Math.PI)/slices); 
    float crtZ = -height/2; 
    float[] vdata = new float[6 * steps * (slices+1)]; 
    for(int iStep = 0; iStep < steps; iStep++) 
    { 
     float crtAlpha = 0; 
     int iAlpha; 
     for (iAlpha = 0; iAlpha <= slices; iAlpha++) 
     { 
      vdata[iStep * (iAlpha*6)+0] = (float)(radius * -Math.sin(crtAlpha)); 
      vdata[iStep * (iAlpha*6)+1] = crtZ; 
      vdata[iStep * (iAlpha*6)+2] = (float)(radius * Math.cos(crtAlpha)); 
      vdata[iStep * (iAlpha*6)+3] = (float)(radius * -Math.sin(crtAlpha)); 
      vdata[iStep * (iAlpha*6)+4] = crtZ + zStep; 
      vdata[iStep * (iAlpha*6)+5] = (float)(radius * Math.cos(crtAlpha)); 

      crtAlpha += alphaStep; 
     } 
     gl.glShadeModel(GL10.GL_SMOOTH); 
     gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
     gl.glVertexPointer(3, GL10.GL_FLOAT, 0, FloatBuffer.wrap(vdata)); 
     gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 2*(slices+1)); 
     gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); 
     crtZ += zStep;       
    } 

} 

這裏就是我所說的方法:

@Override 
public void onDrawFrame(GL10 gl) { 
    // IN MY DRAWING FUNCTION: 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 
    gl.glMatrixMode(GL10.GL_MODELVIEW); 
    gl.glColor4f(1.0f,1.0f,1.0f, 1.0f); 
    gl.glPushMatrix(); 
     Primitives.solidCylinder(gl, 2.0f, 2.0f, 8, 3); 
    gl.glPopMatrix(); 

}

當我有同樣的C/C++(雖然直接與glVertex*() - 功能),它的工作。

編輯:在模擬器上它保持全黑的,而不調用solidCylinder(..)

結果

我在做什麼錯?

感謝和問候

托比亞斯

+1

所以當它「沒有做你想做的事」時,它做了什麼? – 2011-06-12 23:58:30

+0

哦,對。忘了寫關於這個,謝謝! :D *編輯* – Atmocreations 2011-06-13 08:33:28

回答

1

你的問題聽起來非常相似的一個發生在這裏:Android -- OpenGL doesn't display w/ emulator?

如果我是你,我會完成,他確實以確保兩個教程你不會錯過任何OpenGL開發所需的東西,並確保你的模擬器正常工作。以下是爲您提供方便教程:

讓我知道,如果在評論你的作品。

+0

謝謝,羅伯特。該設備(HTC Desire與Android 2.2)的行爲方式與模擬器完全相同。我發佈的內容基本上都是所謂的。將看看其他提示,並讓你保持最新狀態。 – Atmocreations 2011-06-13 08:41:38

+0

更新:好的,它一定是我的數組算術中的東西。仍然不起作用,但您可以在http://stackoverflow.com/posts/6325070/revisions查看修訂版3 – Atmocreations 2011-06-13 09:32:46