التأثيرات ثلاثية الأبعاد في لعبة ثنائية الأبعاد باستخدام OpenGL

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

  •  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
}

فقط كن حذرًا بشأن المخزن المؤقت للعمق - قد تحتاج إلى اللعب مع إعدادات العازلة العمق عند التبديل بين العرضين ثنائي الأبعاد وثلاثية الأبعاد حتى يتم رسم الأشياء بشكل صحيح.

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