لماذا عندما أقوم بتقديم مشهد بأشياء كاميرا دوارة تتوقع أن تظهر وراء الآخرين لا تفعل ذلك؟ 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{}
يحتوي على الرياضيات Do Camera Revolution و Glulookat ()
المحلول
في الأساس ما تفعله الآن هو عرض للرجوع إلى الأمام ، حيث تظهر دائمًا آخر رسم بدائي على الآخرين.
ما تريد القيام به هو تمكين اختبار العمق ، حيث سيتم مقارنة عمق كل جزء قبل رسمها على الشاشة. glEnable(DEPTH_TEST)
يجب المساعدة.
لا تنتمي إلى StackOverflow