なぜ他の人の背後に表示されると予想される回転カメラオブジェクトでシーンをレンダリングしても、なぜそうしないのですか? OpenGL Objective-C
-
27-09-2019 - |
質問
私は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)
助けてください。
所属していません StackOverflow