سؤال

أحتاج إلى جعل شبكة ثلاثية الأبعاد DirectX في وقت التشغيل باستخدام DirectX المدارة من C #. لم أتمكن من تحديد موقع أي معلومات حول كيفية القيام بذلك.

  1. لا، لا يمكنني استخدام برنامج طراز ثلاثي الأبعاد لجعل كائناتي. يجب أن يكونوا بحجمهم بدقة وشكل، وليس لدي أي من المعلومات أو شكلها حتى وقت التشغيل.
  2. لا، لا يمكنني بناء النموذج من إمكانيات شبكة DirectX الحالية. (مثال بسيط: سيتيح لك DirectX طراز قلم رصاص بسهولة باستخدام شبكة مخروطية وشبكة اسطوانة. بالطبع، عليك أن تحمل حوالي شريحتين لقلم رصاصك، وليس فقط واحدا، وموقفا بشكل صحيح وتوجيه كل منها. لكنك لا يمكن حتى جعل نموذج من قسم قلم رصاص في نصف طوله حيث لا يوجد نصف اسطوانة ولا شبكة مخروط نصف المقدمة.)
  3. عند وقت التشغيل، لدي كل القمم محسوبة بالفعل ومعرفة تلك التي توصلها لجعل المثلثات اللازمة.
  4. كل ما أحتاجه هو لون صلب. أنا لا أحتاج إلى خريطة الملمس.

يمكن للمرء الحصول على شبكة من كرة باستخدام مكالمة DirectX هذه:
Mesh sphere = Mesh.Sphere(device, sphereRadius, sphereSlices, sphereStacks);
تم بناء هذه الشبكة في وقت التشغيل.

ما أحتاج إلى معرفته هو كيفية تقديم وظيفة مماثلة:
Mesh shape = MakeCustomMesh(device, vertexlist, trianglelist);
حيث يمكن أن تكون القائمتين أي حاوية / تنسيق مناسب.

إذا كان أي شخص يمكن أن يشير لي إلى رمز عينة DirectX (C #) المدارة (C #)، حتى إذا كان ذلك فقط يبني شبكة من 3 مثلثات صينية، فستكون فائدة رائعة.

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

المحلول

هناك بعض التعليمات البرمجية التي تظهر كيفية القيام بذلك mdxinfo.. وبعد هذا يخلق شبكة مع مجموعات فرعية متعددة - إذا كنت لا تحتاج إلى ذلك، فمن الأسهل.

أساسا، أنت فقط إنشاء شبكة:

Mesh mesh = new Mesh(numIndices, numVerticess, MeshFlags.Managed, CustomVertex.PositionColored.Format /* you'll need to set this */ , device); 

بعد ذلك، يمكنك الاستيلاء على المخزن المؤقت Werm Vertex المخزن المؤقت ومؤشر المخزن المؤقت، والكتابة فوقه، باستخدام:

IndexBuffer indices = mesh.IndexBuffer;
VertexBuffer vertices = mesh.VertexBuffer;

ثم، املأ المؤشرات والمدقات بشكل مناسب.

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