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 回答