سؤال

أواجه مشكلة في لف رأسي حول كيفية عمل هذه هذه العمل. أولاً ، في لعبة ثنائية الأبعاد ، يجب إعداد مصفوفة الإسقاط كأورثو مع اليسار ، اليمين ، أعلى ، أسفل النافذة ، إلى اليمين؟ ولكن عندما يتم تغيير حجم النافذة ، هل يجب أن أقوم بتغيير Glviewport ، وليس مصفوفة الإسقاط؟ وكيف يمكنني الحفاظ على نسبة العرض إلى الارتفاع؟

هل يمكن لأي شخص أن يشرح أغراض هذين الأمرين ، في لعبة ortegrogrical ثنائية الأبعاد ، حتى أتمكن من فهمها بشكل أفضل؟

يبدو أن OpenGL يقوم بالكثير من الأشياء غير المجدية في إعداد ثنائي الأبعاد. نقطية وحساب الشظايا عندما تكون الصور موجودة بالفعل ، وتحويل إحداثيات Vertex إلى NDC فقط ليتم تحويلها إلى ما هي بالفعل من قبل GlviewPort.

أيضًا ، كيف يأتي OpenGL Free Legacy Free ، يتعين علينا صنع المصفوفات الخاصة بنا ، ولكن ليس حساباتنا الخاصة التي تقوم بها Glviewport؟

شكرًا.

هل كانت مفيدة؟

المحلول

لا تخلط بين ما تدخله إلى GL وما يخرج إليه.

المعلمات التي تستخدمها لحساب مصفوفة ortho هي تلك التي ترتبط بك إدخال. إخراج مصفوفة الإسقاط هو دائمًا [-1: 1] x [-1: 1] x [-1: 1] Cube.

يترجم منفذ العرض هذا المكعب إلى إحداثيات العرض الخاصة بك. لذلك هذا هو عادة ما تريد تغييره لتتناسب مع حجم النافذة الجديد (حسنًا ، هذا و FrameBuffer نفسه).

نعم ، يقوم GL بالكثير من الأشياء عديمة الفائدة لمسار تقديم ثنائي الأبعاد. إنها واجهة برمجة تطبيقات ثلاثية الأبعاد بعد كل شيء ...

سأنتهي بالقول إنك لست مضطرًا لإنشاء مصفوفات للقيام بتحويلات ثنائية الأبعاد ، طالما أن مخرجات تظليل الرأس في المكعب الذي ذكرته سابقًا. إذا كنت ترغب في كتابة الزاوية اليمنى العليا من منفذ العرض ، فيمكنك دائمًا تمرير رؤوسك مباشرة مثل (0،0) (0،1) (1،0) (1،1) وببساطة إخراج ذلك.

نصائح أخرى

لست متأكدًا من اللغة التي تستخدمها OpenGL ، ولكن إذا كنت تبحث عن C ++ في هذا الموقع ، http://nehe.gamedev.net/ يغطي إلى حد كبير كل شيء وله برامج تعليمية بسيطة مثل "Hello World" وصولاً إلى الألعاب الأساسية والتأثيرات ثلاثية الأبعاد.

أتمنى أن يساعد ذلك

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