2011-06-12 2 views
0

솔리드 실린더를 그리려는 시도는 내가 원하는 것을하지 않습니다. 나는 메서드를 호출 할 경우 다음안드로이드/OpenGL ES : Draw primitive는 아무 것도하지 않습니다

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(); 

을} 내가 (직접 glVertex*()에 불구하고 - 기능) C/C++에서 동일한했다

가 일 .

편집 : 그것은 solidCylinder(..)

결과를 호출하지 않고 모든 블랙 유지 에뮬레이터에 : 내가 잘못 뭐하는 거지

?

감사와 안부

토비아스 귀하의 문제가 여기에 일어난 것과 매우 비슷한 소리

+1

"원하는대로하지 않으면"무엇을합니까? –

+0

아, 맞아. 그것에 대해 쓰는 것을 잊어 버렸습니다. : D * 편집 됨 * – Atmocreations

답변

1

: 내가 당신이라면 Android -- OpenGL doesn't display w/ emulator?

나는 그가 확인했던 두 튜토리얼을 완료 할 것 OpenGL 개발에 필요한 것을 빠뜨리지 않고 에뮬레이터가 제대로 작동하는지 확인해야합니다. 여기에 귀하의 편의를 위해 튜토리얼은 다음과 같습니다

  • Tutorial 2 - Am I drawing objects to my screen correctly
  • +0

    고마워, Robert. 장치 (HTC Desire with Android 2.2)는 에뮬레이터와 정확히 동일한 방식으로 작동합니다. 그리고 제가 게시 한 것은 기본적으로 호출되는 모든 것입니다. 다른 팁을 살펴보고 최신 정보를 알려줍니다. – Atmocreations

    +0

    업데이트 : 내 배열에 뭔가 있어야합니다. 그래도 작동하지 않지만 http://stackoverflow.com/posts/6325070/revisions에서 개정 3을 확인하십시오. – Atmocreations

    관련 문제