كيف أقوم بإنشاء تأثير التكبير/التصغير في OpenGLES على iPhone؟

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

  •  01-07-2019
  •  | 
  •  

سؤال

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

لقد سمعت عن glScale وglOrtho، لكنني غير متأكد من كيفية عملهما فعليًا نظرًا لأن عالم openGL بأكمله جديد جدًا بالنسبة لي.

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

المحلول

قد يتم تحقيق التكبير/التصغير ثنائي الأبعاد الذي تصفه بشكل أفضل باستخدام الرسوم المتحركة الأساسية.يوفر NSView (ونظيره NDA'd iPhone) رسومًا متحركة ضمنية عند تغيير إطاره.كل ما عليك فعله في هذه الحالة هو تعيين Origin.x و Origin.y و size.width و size.height للإطار على هذه القيم لجعل العرض أكبر من الشاشة.إذا قمت بذلك وقمت بتضمينه في الاستدعاءات المناسبة لبدء رسم متحرك وتنفيذه، فستحصل على رسم متحرك تكبير/تصغير مجانًا.تستخدم Core Animation برنامج OpenGL خلف الكواليس لرسومها المتحركة.

ومع ذلك، إذا كنت تشعر أنه يتعين عليك القيام بذلك في برنامج OpenGL، فهل لي أن أقترح عليك كتابة مقالة صغيرة قمت بها http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es؟أنا مؤلف الجزيئات, ، وهو مصور جزيئي ثلاثي الأبعاد مجاني لجهاز iPhone، ولم أكن أعرف شيئًا عن OpenGL ES قبل أن أبدأ هذا المشروع.وبعد 3 أسابيع، كان موجودًا في متجر التطبيقات عند إطلاقه.

تعد مكالمات OpenGL بسيطة جدًا، والرياضيات المحيطة بها هي التي يمكن أن تسبب لك الصداع.يعد تكبير الكائنات أمرًا بسيطًا جدًا في الواقع، ويمكن إجراؤه إما عن طريق تحريك الكاميرا أو عن طريق قياس الكائنات فعليًا.بالنسبة للجزيئات، سلكت طريق قياس الكائن باستخدام الدالة glScalef(x,y,z)، حيث x وy وz هي عوامل القياس التي ترغب في تطبيقها على كائن النموذج الخاص بك.أقوم بالتحجيم بشكل تدريجي.وهذا يعني أنني لا أقوم بإعادة ضبط مصفوفة التحويل في بداية كل إطار معروض (باستخدام glLoadIdentity())، ولكن فقط قم بقياسها قليلاً بناءً على إدخال المستخدم.إذا قام المستخدم بإبعاد أصابعه عن بعضها بنسبة 5%، أقوم بزيادة المقياس بنسبة 5%.

مرة أخرى، أقترح الرسوم المتحركة الأساسية للتكبير ثنائي الأبعاد الذي وصفته، ولكن ليس من الصعب جدًا تحقيق نفس النتائج في OpenGL ES.

نصائح أخرى

مع احترامي، الإجابة هي أن تستغرق بضعة أيام لتتعلم أساسيات OpenGL، وهناك أماكن أفضل بكثير لذلك على الشبكة من هنا.

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