برنامج OpenGL ES. التمرير 3 طبقة سترفيلد القوام يحصل لي من 60 -> 40 FPS

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

سؤال

وأنا بحاجة لرسم خلفية ل2D مطلق النار التمرير الفضاء. لست بحاجة لتنفيذ 3 طبقات من النجوم: سديم بعيد واحد (بطيئة الحركة حقا) في الخلفية، وطبقة واحدة من أماكن بعيدة النجوم (بطيئة الحركة) وطبقة واحدة من النجوم وثيقة (نقل عادي) على رأس اثنين آخرين

وكانت الطريقة أود في البداية حاول هذا باستخدام 3 القوام من 320 × 480 التي كانت ملفات PNG شفافة من النجوم. كنت GL_BLEND وSRC_ALPHA، ONE_MINUS_SRC_ALPHA.

وكانت النتائج ليست كبيرة حتى على 3GS. على أجهزة الجيل الأول انخفض FPS إلى 40..50 ذلك أعتقد أنني أفعل هذا في الطريق الخطأ.

وعندما وتعطيل كل شيء GL_BLEND يعمل كبيرة حتى على أجهزة جنرال 1ST وFPS يعود إلى 60 مرة أخرى ... لذلك يجب أن يكون حقيقة أنني أحاول أن belnd القوام شفافة كبيرة.

والمشكلة هي أنني لا أعرف كيف نفعل ذلك بطريقة أخرى ...

ويجب أن يوجه فقط السديم الأول وكأنه نسيج مبهمة ثم محاولة لمحاكاة الطبقة المتوسطة والعليا نجوم مع نقاط صغيرة تتحرك في جميع أنحاء الشاشة؟

هل هناك أي طريقة أخرى بشأن هذه القضية المزج؟ كيف يمكنني تسريع عملية التقديم؟ هو نسيج واحد كبير (tileset) الجواب؟

يرجى مساعدتي كوز أنا عالقة هنا وأنا لا يمكن الخروج منها.

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

المحلول

وأنا لا أعرف كيف تريد نجومك لتبدو وكأنها، ولكنك قد ترغب في محاولة لنقلها من نسيج للهندسة باستخدام GL_POINTS في DrawElements أو DrawArrays ربما مجرد استبدال اثنين من كبار طبقات مع طبقات من الهندسة . يمكنك معالجة النقاط باستخدام PointSize، PointSizePointerOES وPointParameter لتعديل مما يجعل من النقاط.

نصائح أخرى

وقد ترغب في استخدام متعدد التركيب لمعرفة ما إذا كان من شأنه أن يسرع عنه. كل مرحلة متعددة الملمس يمكن تعيين مصفوفة التحويل فريدة من نوعها، لذلك يجب أن تكون قادرة على ترجمة كل طبقة بسرعات مختلفة.

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

لاحظ أيضا أن ألفا <م> اختبار يمكن أن يكون أسرع من ألفا <م> مزج .

وحظا سعيدا!

والسديم العودة يجب أن يكون بالتأكيد مبهمة. كل شيء آخر هو الحصول على رسمها على أعلى من ذلك، وأفترض أن الشيء الوحيد وراء ذلك هو أسود. أيضا، prideout لديه نقطة: على افتراض أن طبقات نجمك يكون فعال 1 بت ألفا، وهذا بالتأكيد شيء يمكنك أن تجرب. إذا تعذر ذلك، فإن تقنية GL_POINTS هارالد يذكر تعمل بشكل جيد.

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