سؤال

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

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

لا أعرف الكثير عن التظليلات ، هل سيكونون قادرين على التعامل مع شيء كهذا؟

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


أنا أعمل مع OpenGL أصلاً على Windows 7 64bit مع C ++. أنا لا أستخدم الوفرة

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

المحلول

ربما تريد استخدام: ext_draw_instanced. لم أستخدم Instancing أبدًا ، ولكن معظم وحدات معالجة الرسومات (GF6 وما أعتقد) تسمح لك بتغذية نموذج GPU وقائمة من النقاط وجعلها ترسم النموذج في كل نقطة.

سوف Google بعض المعلومات المزيد من المعلومات وأرى ما توصلت إليه ....

حسنًا ، هذه هي المواصفات الرسمية ، ويبدو أن لديهم برنامج تعليمي عليه.

http://www.opengl.org/registry/specs/arb/draw_instanced.txt

نصائح أخرى

ستحتاج إلى الإبداع لفعل شيء من هذا القبيل. إذا استخدمت CUDA لحساب الموضع والدوران في 2 3 من قوام عائم مكون ثم أطلقت "فهرس" مع كل قمة الرأس وزيادة بمقدار 1 لكل مثيل هندسي ، يمكنك كتابة تظليل يقوم بتحميل القوام ثم يستخدم ملمس قمة التظليل البحث لتحديد البيكسل ذات الصلة من القوام 2 وبناء مصفوفة التحويل. يمكنك بعد ذلك تحويل Verts من الشبكة بواسطة مصفوفة التحويل التي قمت بإنشائها.

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