1

2 つの球があるシーンをレンダリングしています。そのうちの 1 つを中心にカメラを回転させています。何が起こるかは直感に反します。カメラが球体の周りを回ると、後ろにあると予想されるときに、もう一方のカメラが球体の前に出ます。そのため、球体がお互いの周りを回転しておらず、回転する球体が常に前にあるように見えます。助けてください。

シーンをレンダリングするコードは次のとおりです。

glLoadIdentity();

[self positionCamera];

glutSolidSphere(2, 12,12);

glPushMatrix();
glTranslatef(5, 0, 0);
glutSolidSphere(0.5, 12,12);
glPopMatrix();

glFlush();  

このブロックは、使用時に呼び出されるクラスの一部です。

[NSTimer scheduledTimerWithTimeInterval:DEFAULT_ANIMATION_INTERVAL 
                                 target:self 
                               selector:@selector(drawRect) 
                               userInfo:nil 
                                repeats:YES];

-(void)positionCamera{}

カメラの回転を行う数学と gluLookAt() が含まれています

4

1 に答える 1

1

基本的に、現在行っているのは背面から前面へのレンダリングで、最後に描画されたプリミティブが常に他のプリミティブの上に描画されます。

やりたいことは、画面に描画される前に各フラグメントの深度が比較される深度テストを有効にすることです。glEnable(DEPTH_TEST)助けるべきです。

于 2010-04-19T02:46:35.050 に答える