OpenGL - Sierpinski Tetraeder - Verdeckung nicht korrekt



  • Hallo zusammen,

    ich kann mir absolut nicht erklären warum ich folgendes Bild erhalte.
    http://pixload.org/?v=unbenahnh.png

    Die Statemachine sieht so aus:

    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glFrontFace(GL10.GL_CCW);
    gl.glEnable(GL10.GL_CULL_FACE);
    gl.glCullFace(GL10.GL_BACK);
    gl.glEnable(GL10.GL_DEPTH_TEST);
    gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    

    Die Indizes werden gegen den Uhrzeigersinn in die Indexliste eingetragen und dann so gezeichnet:

    gl.glColorPointer(4, GL10.GL_FLOAT, 0, m_color_buffer);
    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, m_float_buffer);
    gl.glDrawElements(GL10.GL_TRIANGLES, 12, GL10.GL_UNSIGNED_SHORT, m_index_buffer)
    

    Der Hintere Tetraeder müßte eigtl. vorne erscheinen.
    Was kann das für Ursachen haben?

    Braucht ihr noch mehr Daten?



  • Hat dein Fenster überhaupt einen Depth Buffer?



  • Hallo,

    Was meinst Du mit "ob das Fenster einen depth-buffer hat"?

    Ich dachte, dass der z-Buffer durch

    gl.glEnable(GL10.GL_DEPTH_TEST);
    

    aktiviert wird.

    Mittlerweile wird die Verdeckung richtig berechnet. Ich hatte am Ende eines jeden "DrawFrame()" ein

    gl.glDisable(GL10.GL_DEPTH_TEST)
    

    .

    Wenn ich das auskommentiere gehts. Ich verstehe aber nicht wieso, denn ich hatte es vor jedem Rendern auch wieder eingeschaltet.

    Hat jemand ne Idee?


Anmelden zum Antworten