Android / OpenGL ES: рисовать примитив ничего не делает - PullRequest
0 голосов
/ 13 июня 2011

Попытка нарисовать сплошной цилиндр не делает то, что я хочу. Вот мой код:

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

Результат

Что я делаю не так?

Спасибо и всего наилучшего

Tobias

1 Ответ

1 голос
/ 13 июня 2011

Ваша проблема звучит очень похоже на ту, что произошла здесь: Android - OpenGL не отображает w / emulator?

На вашем месте я бы закончил два урока, которые он сделал, чтобы убедиться, что вы не пропустили ничего, что требуется для разработки OpenGL, и чтобы убедиться, что ваш эмулятор работает так, как должен. Вот учебники для вашего удобства:

Дайте мне знать, если это работает для вас в комментариях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...