سؤال

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

ولقد قرأت الطرق التي تشارك كتابة C ++ إلى DLL الأصلي، ومع ذلك فإنه سوف يفضل أن تكون قادرة على الحصول على مشاريع C ++ المتضمنة في الحل (أنا لا أعرف حتى إذا كان ذلك ممكنا على الرغم من). Eitherway، إذا كنت تعرف بعض الخطوات مفيدة، وتلميحات، أو إذا كان هذا هو فكرة سيئة بشكل عام، واسمحوا لي أن أعرف. شكرا!

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

المحلول

وأسهل طريقة للقيام بذلك سيكون لإضافة مشروع C ++ / CLI إلى الحل الخاص بك. وهذا من شأنه ثم تمكنك من استخدام واجهات COM دايركت مباشرة وإنشاء مجمع المدارة التي من السهل الاتصال من هاتفك C # رمز. لقد اتخذت هذا النهج عدة مرات وانها حتى الآن أسهل طريقة خلط DirectX و صافي التي حاولت من أي وقت مضى. دايركت تمكن تستخدم ليكون خيارا، ولكن لم يعد يؤيد ذلك، وكان مجموعة فرعية صغيرة نسبيا من API COM الكامل على أي حال.

نصائح أخرى

وأولا وقبل كل كتابة الجزء C ++ في ملف DLL مختلفة لا يعني أنه لا يمكن أن تكون على نفس الحل كما C # المشروع.

ولكي تتمكن من استخدام DX الأصلي لتقديم على نافذة تمكن تحتاج إلى تمرير نافذة معرف HWND (استخدام form.WindowId.ToInt32) إلى c'tor C ++ D3Ddevice. بعد ذلك في كل مرة سوف تجعل استخدام هذا الجهاز أنه من شأنه أن يجعل في إطار .NET.

لذلك ربما كنت بحاجة مشروعين saparate - وC ++ دلل ومشروع .NET. استخدام المجمع COM أو ف الاحتجاج لتمرير HWND إلى DLL C ++.

إذا كنت لا تريد أن تنفق الكثير من الوقت على كتابة C ++ رمز لDirectX يمكنك النظر في استخدام SlimDX ، منذ المدارة دايركت 1.0 هو غير وارد، حيث مثل 2.0 أبدا يترك بيتا واستبدالها في وقت لاحق مع XNA التي لديها مختلفة تماما عن دايركت نفسها، وتتطلب منك تثبيت XNA لعبة ستوديو

SlimDX هو نسخة مفتوحة المصدر من DirectX تمكن مع API مختلف قليلا والهيكل الداخلي، إلا أنه من السهل أن استعمال. النسخة التي تم إصدارها مؤخرا مستقرة جدا. أنا حاليا استخدامه لكتابة تطبيق الإنتاج.

SlimDX

المدارة دايركت

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