なぜ他の人の背後に表示されると予想される回転カメラオブジェクトでシーンをレンダリングしても、なぜそうしないのですか? OpenGL Objective-C

StackOverflow https://stackoverflow.com/questions/2664936

質問

私は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()

役に立ちましたか?

解決

基本的にあなたが今やっていることは、前面に戻るレンダリングであり、最後の原始的な描画が常に他のものに描かれます。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top