سؤال

نظرًا لأن مشروعي يقترب من مرحلة التحسين ، لاحظت أن تقليل بيانات التعريف في قمة الرأس يمكن أن يحسن بشكل كبير من أداء العرض ثلاثي الأبعاد.

في النهاية ، لقد بحثت غالياً ووجدت نصائح متابعة من Stackoverflow.

باستخدام gl_short بدلاً من gl_float في صفيف قمة OpenGL ES

كيف تمثل إحداثيًا طبيعيًا أو ملمسًا باستخدام Glshorts؟

نصيحة بشأن تسريع OpenGL ES 1.1 على iPhone

تُظهر التجارب البسيطة أن التبديل من "Float" إلى "Short" لـ Vertex و Normal ليس صعبًا ، ولكن ما يزعجني هو أن تتوسيع نطاقًا من الحشرات إلى حجمها الأصلي (مع GLSCALEF) ، يتم ضرب القواعد الطبيعية بواسطة المعاملة بالمثل من المقياس. العلاج الطبيعي لهذا هو ضرب القواعد الطبيعية مع المقياس قبل الخضوع ل GPU. بعد ذلك ، أصبحت القواعد الطبيعية القصيرة تقريبًا 0 ، لأن عامل المقياس عادة ما يكون أصغر من 0. Duh!

كيف تستخدم "قصيرة" لكل من قمة الرأس والطبيعية في نفس الوقت؟ لقد كنت أحاول ذلك ، وهذا لمدة يوم كامل تقريبًا ، لكنني لم أستطع إلا أن أذهب إلى "قمة العائمة مع بايت عادي" أو "قمة قصيرة مع طبيعية" حتى الآن.

سيكون موضع تقدير مساعدتك حقًا.

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

المحلول

ألا يمكنك فقط تطبيع القواعد الطبيعية عن طريق تسمية هذا؟

glEnable( GL_NORMALIZE );

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

نصائح أخرى

الأشياء الممكنة التي يجب تجربتها:

  • حاول مواجهة التحجيم عن طريق العبث مع مصفوفة gl_normal
  • استخدم تظليل Vertex لإجراء العمليات الحسابية كما يحلو لك
  • لا تقم بتوسيع نطاق بيانات قمة الرأس لأسفل ، قم بتكبير مصفوفات الكاميرا بدلاً من ذلك
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top