솔리드 실린더를 그리려는 시도는 내가 원하는 것을하지 않습니다. 나는 메서드를 호출 할 경우 다음안드로이드/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(..)
결과를 호출하지 않고 모든 블랙 유지 에뮬레이터에 : 내가 잘못 뭐하는 거지
?
감사와 안부
토비아스 귀하의 문제가 여기에 일어난 것과 매우 비슷한 소리
"원하는대로하지 않으면"무엇을합니까? –
아, 맞아. 그것에 대해 쓰는 것을 잊어 버렸습니다. : D * 편집 됨 * – Atmocreations