سؤال

أقوم بتجربة التظليل مع معالجة 2.0. كتعبير بسيط في فهم نقطة التظليل أفضل قليلا، لقد قمت بتنفيذ نظام يتم بموجبه في فئة Sprite:

  1. قمت بتعيين ورقة الإصدارات كعملات Sampler2D موحدة في Shigment Shader. 2048X 2048 (12 × 12 إطارات ميدان 128 بكسل)
  2. أنا أقوم بإنشاء نقطة.
  3. أقوم بإعداد إحداثيات الأشعة فوق البنفسجية في شادت Vertex للنقطة.
  4. أنا تعوض إحداثيات الأشعة فوق البنفسجية في برنامج Vertex Shader بواسطة عدد صحيح تم تمريره كأقل متغير موحد لتحديد "الإطارات" في ورقة الإبراز
  5. قمت بتحديث عدد صحيح (باستخدام MODULUS إلى حلقة) زيادة إزاحة الأشعة فوق البنفسجية كل 5 إطارات في التطبيق.
  6. هذا يعني أنه يمكنني القيام بتسلسل الرسوم المتحركة الأساسية من داخل Shader Vertex. ليس لدي أي فكرة عما إذا كان هذا أمر مرغوب فيه، لكنني أظن أنه سيعمل بشكل أفضل من تحديد Sampler2D موحدة جديدة في شادظ جزء في كل مرة أرغب في تغيير الإطارات.

    سؤالي - كيف يمكنني استخدام هذا التظليل عبر مثيلات متعددة؟ إذا كنت تريد اثنين من العفصات على الشاشة في نفس الوقت مع وجود قيم مختلفة (أي لعب إطارات مختلفة للرسوم المتحركة) كيف يتم تحقيق ذلك دون كل واحد له نقطة وجوده وبالتالي نسخته الخاصة من Sampler2D الموحدة في الذاكرة؟

    آمل أن تتمكن من المساعدة.

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

المحلول

نعم، هذا النهج أفضل بكثير ثم وضع نسيج جديد كل إطار.

لرسم العفصات المتعددة فقط استخدم نفس البرنامج ورسم الكائنات واحدة تلو الأخرى باستخدام موحدة مختلفة:

1: gluseprogram (yourprogram)؛

2: .. مجموعة الملمس والأشعة فوق البنفسجية للكائن الأول

3: ..draw الكائن الأول

4: .. مجموعة نسيج جديدة (أو الحفاظ على نفس الملمس هو العفاريت هناك) .. set uv لهيئة الكائن الثاني

5: ..draw الكائن الثاني وهلم جرا

تحرير: البرنامج غير مرتبط بالزي الرسمي الذي قمت بتعيينه عليه، يمكنك دائما التغيير ثم استدعاء السحب مرة أخرى.

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