为什么当我渲染场景用相机旋转的对象,你希望出现在别人后面不这样做呢? OPENGL的Objective-C
-
27-09-2019 - |
题
我渲染场景中,我有两个球。我旋转摄像头其中之一左右。什么情况是违反直觉的。当相机进入球体周围其他获得在它的面前时,你会希望它是落后。因此,看起来,球体绕不相互旋转和一个应该去周围始终放在首位。请帮助。
下面是渲染场景的代码:
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