D3DX
في مجال الحوسبة ، تُعدّ D3DX (امتداد Direct3D) مكتبة واجهة برمجة تطبيقات عالية المستوى ، مصممة لتكملة واجهة برمجة تطبيقات الرسومات Direct3D من مايكروسوفت . تم تقديم مكتبة D3DX في Direct3D 7 ، ثم جرى تحسينها في Direct3D 9. توفر المكتبة فئات لإجراء العمليات الحسابية الشائعة على المتجهات والمصفوفات والألوان، وحساب مصفوفات الإسقاط والنظر، واستيفاءات الخطوط المنحنية، بالإضافة إلى العديد من المهام الأكثر تعقيدًا، مثل تجميع أو دمج التظليلات المستخدمة في برمجة الرسومات ثلاثية الأبعاد، وتخزين الرسوم المتحركة الهيكلية المضغوطة، ومكدسات المصفوفات. كما تتضمن المكتبة العديد من الدوال التي توفر عمليات معقدة على الشبكات ثلاثية الأبعاد، مثل حساب فضاء المماس، وتبسيط الشبكة، ونقل الإشعاع المحسوب مسبقًا، وتحسين توافق ذاكرة التخزين المؤقت للرؤوس، وإعادة ترتيب الشرائح، ومولدات شبكات النصوص ثلاثية الأبعاد. تشمل الميزات ثنائية الأبعاد فئات لرسم خطوط مساحة الشاشة، وأنظمة الجسيمات القائمة على النصوص والرسوم المتحركة . تشمل الوظائف المكانية إجراءات التقاطع المختلفة، والتحويل من/إلى الإحداثيات المركزية، ومولدات الصندوق المحيط والكرة.
تحتوي مكتبة D3DX على إجراءات جاهزة لتنفيذ مهام شائعة في معظم تطبيقات ثنائية وثلاثية الأبعاد، مثل الألعاب. ونظرًا لأن واجهة برمجة تطبيقات Direct3D منخفضة المستوى نسبيًا، فإن استخدام مكتبة D3DX عادةً ما يكون أبسط بكثير.
في عام ٢٠١٢، أعلنت مايكروسوفت عن إيقاف دعم D3DX 9 وD3DX 10 وD3DX 11 في حزمة تطوير البرامج (SDK) لنظام التشغيل ويندوز ٨ ، [ ١ ] إلى جانب أطر تطوير أخرى مثل XNA . تتوفر تأثيرات التظليل، وإدارة النسيج، وتحسينات الهندسة، ونماذج الشبكة كمصادر منفصلة منشورة عبر GitHub . [ ٢ ] سيتم دمج البنى الرياضية لـ D3DX، مثل المتجهات والمصفوفات ، مع XNAMath في DirectXMath [ ٣ ] ، بينما تُقدم حسابات التوافقيات الكروية كمصدر منفصل. [ ٢ ]
واجهات
تتبع مكتبة D3DX نموذج البرمجة الكائنية التوجه COM . ويتم الوصول إلى الوظائف باستخدام واجهات تشبه واجهات لغة C++ .
تأثير ID3DX
تُستخدم واجهة ID3DXEffect لتجميع وربط مُظلِّلات FX ( .fx ). وهي تدعم الربط التلقائي لمعاملات المُظلِّل المُسماة بسجلات الثوابت في الأجهزة، ومجموعات المعاملات، وربط الصور النسيجية بأجهزة أخذ العينات المتاحة، وتحديد "التقنيات"، وتعديل حالات العرض. كانت ملفات تأثيرات FX عبارة عن أوصاف نصية لحالة Direct3D، تجمع حالة العرض، وحالة الصور النسيجية، والمُظلِّلات، والمعاملات في تقنية واحدة أو أكثر؛ ويمكن أن تحتوي كل تقنية على تمريرة واحدة أو أكثر، مما يسمح للتطبيق باختيار التنفيذ الأنسب للأجهزة المستهدفة في وقت التشغيل. [ 4 ] [ 5 ]
خط ID3DX
يمكن استخدام واجهة ID3DXFont لرسم نص ثنائي الأبعاد. انظر أيضًا إلى D3DXCreateText التي تُنشئ نماذج ثلاثية الأبعاد للنص.
خط ID3DXLine
يمكن استخدام واجهة ID3DXLine لرسم خطوط مساحة الشاشة المضادة للتشويش بنمط معين.
شبكة ID3DX
تُستخدم واجهة ID3DXMesh لتخزين الشبكات وتحسينها، بما يُسهّل استخدام ذاكرة التخزين المؤقت للرؤوس وإعادة ترتيب الشرائح. وتعتمد بعض وظائف D3DX على هذه الواجهة، مثل D3DXComputeTangentFrame لإنشاء إطار في فضاء المماس لتطبيق تأثيرات مثل رسم الخرائط العادية وخرائط اختلاف المنظر. ومن بين الفئات الفرعية لهذه الواجهة، فئة ID3DXPMesh التي تُتيح تبسيط الهندسة.
محرك ID3DXPRTEngine
تُستخدم هذه التقنية لنقل الإشعاع المحسوب مسبقًا ، وهي تقنية مشابهة لإضاءة التوافقيات الكروية، وتُستخدم للإضاءة العالمية المحسوبة مسبقًا والإضاءة المحيطة الناعمة. [ 6 ] كانت طرقها تُستخدم عادةً دون اتصال بالإنترنت لحساب متجهات النقل لكل رأس أو لكل بكسل مسبقًا، وقد أشارت مايكروسوفت لاحقًا إلى أن محاكي نقل الإشعاع المحسوب مسبقًا ظل متاحًا فقط في الإصدار القديم من D3DX9. [ 7 ] [ 2 ]
ID3DXSprite
واجهة ID3DXSprite هي فئة C++ تُستخدم لرسم صورة ثنائية الأبعاد على الشاشة، تُعرف باسم sprite في رسومات الحاسوب . في DirectX 7، كان يتم ذلك عادةً باستخدام واجهة برمجة التطبيقات DirectDraw ، والتي أصبحت مهملة.
يحتاج المبرمج عادةً فقط إلى استدعاء طريقة Begin() الخاصة بكائن ID3DXSprite لإعداد حالة العرض وتحويل العالم للرسم ثنائي الأبعاد، واستدعاء طريقة Draw() لإضافة القوام إلى القائمة المراد رسمها، وأخيرًا استدعاء طريقة End() لرسم الصور على الشاشة واستعادة حالة الرسومات الأصلية.
كان أحد الانتقادات الشائعة لـ D3DXSprite هو أنه كان بطيئًا، ولكن تمت معالجة هذه المشكلة اعتبارًا من Direct3D 9 .
الوظائف
D3DXComputeTangentFrame
يحسب هذا البرنامج إطار الفضاء المماسي للشبكة، والذي يُستخدم في تأثيرات مثل رسم الخرائط العادية/النتوءية، ورسم خرائط اختلاف المنظر، ونماذج الإضاءة غير المتناحية. ويتعامل مع الرؤوس عند نقاط انقطاع الفضاء المماسي عن طريق إنشاء نسخ مكررة، مما يحل مشكلة " الكرة الشعرية" . لكنه لا يتعامل مع التفاف الأشعة فوق البنفسجية المعكوس للوجوه، لذا قد تواجه النماذج ذات خرائط النسيج المعكوسة مشاكل في الإضاءة بسبب ذلك.
Direct3D10
كانت مكتبة D3DX10 المساعدة لـ Direct3D 10 مشابهة لمكتبة D3DX لـ Direct3D 9 من حيث الوظائف، وتضمنت نفس مكتبة D3DXMath وبرامج ترميز ضغط الكتل (BC1-BC5). تمثلت الاختلافات الرئيسية في أن Effects لـ Direct3D 10 أصبحت مكونًا من مكونات نظام التشغيل، ونُقل مُصرّف HLSL إلى مكتبة DLL منفصلة باسم D3DCompile، واستخدمت شيفرة تحميل وحفظ صور النسيج مكون Windows Imaging Component . ونتيجةً للتحول إلى استخدام WIC، لم تدعم D3DX10 تنسيقات صور Truevision TGA و RGBE و Portable PixMap التي كانت مدعومة من D3DX. كما لم تتضمن D3DX10 واجهات برمجة تطبيقات UVAtlas لرسم خرائط النسيج المتساوية أو Precomputed Radiance Transfer .
جميع إصدارات D3DX10 أصبحت قديمة وفقًا لوثائق مايكروسوفت. [ 3 ]
Direct3D11
كانت مكتبة D3DX11 المساعدة لـ Direct3D 11 نسخة مختصرة من D3DX10. وقد تضمنت رمز تحميل وحفظ صور النسيج باستخدام WIC، وبرامج ترميز ضغط الكتل (BC1-BC7)، ولكن القليل غير ذلك.
جميع إصدارات D3DX11 أصبحت قديمة وفقًا لوثائق مايكروسوفت. [ 3 ]
تم نقل معظم وظائف D3DX9 وD3DX10 وD3DX11 إلى مشاريع مفتوحة المصدر لـ Direct3D 11 أو الإصدارات الأحدث: DirectXMath [ 8 ]، وDirectX Tool Kit [ 9 ] ، وDirectXTex [ 10 ] ، وDirectXMesh [ 11 ] ، وUVAtlas [ 12 ] . كما تتوفر إصدارات مفتوحة المصدر من DXUT [ 13 ] ووقت تشغيل Effects (FX11) [ 14 ] . على عكس Effects 10، تم توزيع FX11 كمصدر بدلاً من ملف DLL، وقد وصفته مايكروسوفت بأنه أداة مساعدة لنقل أكواد FX9/FX10 القديمة [ 15 ] [ 14 ] .
Direct3D12
لا توجد مكتبة أدوات D3DX12 تعتمد على ملفات DLL. مع ذلك، يوجد ملف رأس لأدوات D3DX12 (كود C++ مضمن بالكامل) لبعض الأدوات المساعدة الأساسية لـ Direct3D 12، موثق على وثائق مايكروسوفت [ 16 ] ومنشور على GitHub [ 17 ] . لا يتضمن هذا الملف وظائف مثل العمليات الحسابية، والرسومات النقطية، وعرض الخطوط، والأشكال ثلاثية الأبعاد، والشبكات، أو تحميل الصور. يوجد حزمة أدوات DirectX لـ Direct3D 12 [ 18 ] توفر هذه الوظائف المفقودة.
مراجع
- ↑ "وظائف D3DX (رسومات Direct3D 11)" . مايكروسوفت. 18 أغسطس 2023.
- 1 2 3 "العيش بدون D3DX" . MSDN. 20 أغسطس 2013.
- 1 2 3 مايكروسوفت. "أين حزمة تطوير البرامج DirectX؟" . مايكروسوفت . تم الاطلاع عليه بتاريخ 28 يونيو 2020 .
- ↑ "الفصل 31. استخدام FX Composer" . NVIDIA Developer / GPU Gems.
- ↑ "تأثيرات D3DX وتنسيق ملف FX" (ملف PDF) . NVIDIA.
- ↑ "واجهة محرك ID3DXPRTEngine (D3DX9Mesh.h) - تطبيقات Win32" . Microsoft Learn.
- ↑ "واجهة محرك ID3DXPRTEngine (D3DX9Mesh.h) - تطبيقات Win32" . Microsoft Learn.
- ↑ "DirectXMath" . GitHub. 17 فبراير 2022.
- ↑ "مجموعة أدوات DirectX لـ DX11" . GitHub. 18 فبراير 2022.
- ↑ "مكتبة معالجة نسيج DirectXTex" . GitHub. 16 فبراير 2022.
- ↑ "مكتبة معالجة هندسة DirectXMesh" . GitHub. 18 فبراير 2022.
- ↑ "مكتبة UVAtlas لإنشاء خرائط نسيجية متساوية الأبعاد" . GitHub. 15 فبراير 2022.
- ↑ "DXUT لـ Direct3D 11" . GitHub. 12 فبراير 2022.
- 1 2 "تأثيرات لـ Direct3D 11" . GitHub. 12 فبراير 2022.
- ↑ "الاختلافات بين التأثيرات 10 والتأثيرات 11" . مايكروسوفت ليرن.
- ↑ مايكروسوفت. "هياكل ووظائف مساعدة لـ D3D12" . مايكروسوفت . تم الاطلاع عليه بتاريخ 28 يونيو 2020 .
- ↑ "D3DX12" . GitHub.
- ↑ "مجموعة أدوات DirectX لـ DX12" . GitHub. 18 فبراير 2022.
روابط خارجية
- واجهات برمجة تطبيقات مايكروسوفت
- DirectX
