Ich habe ein Modell eines Schneemanns, den ich aus einer OBJ-Datei lade. Alles funktioniert gut, außer dass wenn ich glRotatef() verwende, um das Modell zu drehen, der Kopf des Schneemanns immer vor dem Körper rendern wird. Die Nase des Schneemannes wird auch immer hinter dem Kopf rendern. Dies erzeugt den Effekt, dass der Schneemann die Richtung ändert, während er sich dreht, aber die Teile werden nicht in der richtigen z-Reihenfolge dargestellt. Warum passiert das?OpenGL ES - Falsches Rendern auf der Z-Achse?
HINWEIS: Alle Teile des Schneemanns stammen aus der gleichen .obj-Datei, die mit dem Mixer erstellt wurde.
das Modell wie folgt aus (in der Streck loop) Rendering
glVertexPointer(3 ,GL_FLOAT, 0, model_verts);
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, model_normals);
glDrawElements(GL_TRIANGLES, num_model_indices*3, GL_UNSIGNED_SHORT, &model_indices);
wie diese dreht (in touchesMoved)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
touchBeginPos = [touch locationInView:self];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint touchEndPos = [[touches anyObject] locationInView:self];
glMatrixMode(GL_MODELVIEW_MATRIX);
glRotatef(10, (touchBeginPos.y - touchEndPos.y)/4, -(touchBeginPos.x - touchEndPos.x)/4, 0.0f);
touchBeginPos = touchEndPos;
}
einige High-Level-Code der Veröffentlichung könnte erklären helfen, was los ist. – luke
Gibt es weitere nützliche Informationen? –