سؤال

والسادة والسيدات الكرام.

ونشرت لي هذا السؤال في منتدى COM في مشروع القانون وحصلت على الرد مخاطي لذلك نأمل سوف تكون أكثر فائدة.

وأنا أرى أن مايكروسوفت لديها مكتبة COM لDirect3D 9 يتعرض مع GUID 81BDCBCA-64D4-426d-AE8D-AD0147F4275C.

وكشفت مايكروسوفت Direct3D 10 على COM وإذا كان الأمر كذلك، ما هو GUID واجهة؟

وشكرا مقدما.

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

المحلول

ومن وثائق على MSDN، يبدو أنها قد انتقلت من وجود كائن IDirect3D9 مع وظائف الأعضاء مثل <وأ href = "http://msdn.microsoft.com/en-us/library/bb174313(VS 0.85) .ASPX "يختلط =" نوفولو noreferrer "> IDirect3D9 :: CreateDevice للاستخدام وظائف العالمية مثل <وأ href =" http://msdn.microsoft.com/en-us/library/bb205086 ( VS.85) .ASPX "يختلط =" نوفولو noreferrer "> D3D10CreateDevice . مع Direct3D 10، لقد انقسم العديد من الوظائف التي كانت في IDirect3D9 المتعلقة (على سبيل المثال) محولات في في البنية التحتية رسومات DirectX (DXGI) .

وبعبارة أخرى، Direct3D 10 لا يزال يستخدم COM، ولكن لا، ليس هناك من نظيره IDirect3D9. تحقيق الأشياء التي استخدمتها IDirect3D9 الآن عبر وسائل أخرى.

وتحرير: فئة COM مع GUID أعلاه هو IDirect3D9. Direct3D 10 لايوجد نسخة محدثة من هذا (ليس هناك IDirect3D10 أن يفعل الأشياء IDirect3D9 لا)؛ بدلا من ذلك، تم تقسيم وظائف عضو من تلك الفئة إلى وظائف العالمية (مثل <وأ href = "http://msdn.microsoft.com/en-us/library/bb205086(VS.85).aspx" يختلط = "نوفولو noreferrer "> D3D10CreateDevice ) الذي تسمونه مباشرة بدلا من عبر كائن، وإلى الطبقات DXGI (مثل <وأ href =" http://msdn.microsoft.com/en-us/library/bb174546 ( VS.85) .ASPX "يختلط =" نوفولو noreferrer "> IDXGIOutput ). لا تحتاج كائن IDirect3D10 لأن المهام التي ستستخدم لأنها تتم الآن بطرق مختلفة.

ويجب أن تكون قادرة على الخريطة المعرفات الفريدة العمومية لأسماء فئة COM عن طريق البحث في الملفات رأس Direct3D للماكرو DEFINE_GUID.

نصائح أخرى

في COM، معلومات المكتبات مثل كنت طالبا ليتم ترميز في مكتبة نوع (ملف TLB). لم تستخدم Direct3D مكتبة نوع أو CoCreateInstance لأي من أغراضها منذ دايركت 8.0، منذ ما يقرب من عشر سنوات حتى الآن. يستخدم Direct3D اجهات COM لإدارة عمر أهدافها وذلك حول هذا الموضوع. أنها لا تستخدم QueryInterface كثيرا في كل شيء. معظم البنية التحتية COM لا ينطبق على واجهات المستخدم من قبل Direct3D و الأشياء المرتبطة بها.

وأنها لا تستخدم CoCreateInstance لإنشاء كائنات ولكن بدلا من ذلك توفير وظيفة مصنع واحد (مثل Direct3DCreate9) التي تحصل على واجهة قاعدة ومن ثم استخدام أساليب الخالق من أن واجهة قاعدة للحصول على كل شيء آخر. في Direct3D 10، أدركوا أن واجهة قاعدة أن يعدد ويعرض ذلك على ان مستقرة والشيء نفسه بالنسبة لD3D 8 و 9 D3D، حتى أنها انتقلت إلى مستقر واجهة قاعدة IDXGIFactory. ويستخدم نفس رمز DXGI لD3D 10 و 10.1 و 11.

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