1
我正在渲染一個場景,其中有兩個球體。我圍繞其中一個旋轉攝像頭。會發生什麼是違反直覺的。當相機繞過球體時,其他球體會在你期望它落後時進入球體。所以看起來好像這些球體並不是圍繞着彼此旋轉,而是應該繞過的那個始終是前面的。請幫忙。爲什麼當我用旋轉照相機渲染一個場景時,你期望出現在其他人後面的對象不這麼做? OPENGL Objective-c
下面是渲染場景的代碼:
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()
我有一個GL初始化類,我只是這樣做。我測量了深度緩衝區。 int depth; glGetIntegerv(GL_DEPTH_BITS,&depth); NSLog(@「%i比特深度」,深度) 它返回0. 這是問題嗎? – nebulus 2010-04-19 03:08:35
您肯定需要深度緩衝區來進行深度測試。我不確定它爲什麼不存在,但檢查你的初始化代碼。你總是可以嘗試明確地創建一個深度格式紋理,只是爲了確保它被硬件支持(雖然我不熟悉Objective-C,所以沒有代碼示例)。 取決於您的物體距離相機多遠,16或24位深度緩衝區應該足夠多。 如果這些都不起作用,你總是可以使用trig來找出哪些應該在前面並且最後渲染那個。但深度測試絕對是更好的選擇。 – ssube 2010-04-19 03:16:41
太棒了!我爲我的應用程序窗口設置了一個24位緩衝區。 IB可以讓您輕鬆使用Inspector。有用。多謝你們! – nebulus 2010-04-19 03:21:38