لماذا عندما أقوم بتقديم مشهد بأشياء كاميرا دوارة تتوقع أن تظهر وراء الآخرين لا تفعل ذلك؟ OpenGL Objective-C

StackOverflow https://stackoverflow.com/questions/2664936

سؤال

أقوم بتقديم مشهد لديّ مجالاتان. أنا أدور كاميرا حول واحد منهم. ما يحدث هو غير بديهي. عندما تتجول الكاميرا حول الكرة ، فإن الآخر أمامها عندما تتوقع أن يكون وراءها. لذلك يبدو كما لو أن المجالات لا تدور حول بعضها البعض والواحد الذي يجب أن يدور حوله دائمًا مقدمًا. الرجاء المساعدة.

فيما يلي الرمز الذي يجعل المشهد:

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) يجب المساعدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top