التأثيرات ثلاثية الأبعاد في لعبة ثنائية الأبعاد باستخدام OpenGL
-
22-07-2019 - |
سؤال
أنا أعمل على لعبة ثنائية الأبعاد باستخدام OpenGL ES. أنا أستخدم الإسقاط الإملائي ، لأنه يجعل الأشياء ثنائية الأبعاد سهلة. الآن أود إنشاء تأثير ثلاثي الأبعاد بسيط ، على سبيل المثال ، قم بتدوير العفريت حول محور Y (شيء يشبه تدفق الغطاء). إذا فهمت الأشياء بشكل صحيح ، فلا يمكن القيام بذلك في إسقاط Ortho. هل من الممكن القيام بذلك دون أن تعبث بقية الكود؟ مثل تبديل الإسقاط في منتصف الإطار ، تعامل مع صورة الإطار الحالي كخلفية ورسم الأشياء ثلاثية الأبعاد فوق الخلفية؟
المحلول
نعم ، هذا ممكن: ما عليك سوى حفظ مصفوفة الإسقاط القديمة ، وتحميل واحدة جديدة ، واستعادة القديم عند الانتهاء.
void DrawScene()
{
Draw2DStuff();
glMatrixMode(GL_PROJECTION);
glPushMatrix(); // Save old projection matrix
gluPerspective(...); // Load new projection matrix
Draw3DStuff();
glMatrixMode(GL_PROJECTION);
glPopMatrix(); // Restore old projection matrix
}
فقط كن حذرًا بشأن المخزن المؤقت للعمق - قد تحتاج إلى اللعب مع إعدادات العازلة العمق عند التبديل بين العرضين ثنائي الأبعاد وثلاثية الأبعاد حتى يتم رسم الأشياء بشكل صحيح.