كيف يمكنني تحديد يعرض تعلق على نفس الجهاز الفعلي باستخدام Direct3D9؟
-
22-08-2019 - |
سؤال
وعن طريق Direct3D9، يمكنني الاعتماد على محولات المتاحة باستخدام IDirect3D9::GetAdapterCount()
. ومع ذلك، وهذا يعود لعدد من المخرجات، أي 2 للحصول على بطاقة الرسومات ثنائية رئيس واحد. باستخدام Win32 API، ويمكنني أن تعداد أجهزة العرض وشاشات تعلق باستخدام المقتطف التالي:
DISPLAY_DEVICE displayDevice;
::ZeroMemory(&displayDevice, sizeof(displayDevice));
displayDevice.cb = sizeof(displayDevice);
/* Enumerate adapters. */
for (UINT i = 0; ::EnumDisplayDevices(NULL, i, &displayDevice, 0); i++) {
/* Enumerate the monitors. */
for (UINT j = 0; ::EnumDisplayDevices(displayDevice.DeviceName, j,
&displayDevice, 0); j++) {
// Do stuff here
}
}
وأسئلتي هي: هل هناك ما يعادل لهذا في D3D، الذي يعمل أيضا بشكل صحيح إذا أنا إنشاء الجهاز D3D بعد ذلك باستخدام D3DCREATE_ADAPTERGROUP_DEVICE
؟ إن لم يكن، هل هناك أي افتراضات أنا يمكن أن تجعل حول ترتيب تعداد الأجهزة التي يمكنني استخدامها لتتناسب مع النتائج API Win32 لمحولات D3D؟ وبعبارة أخرى: هل محول Direct3D 0 ضمان أن يكون محول الأول عاد من EnumDisplayDevices
والإضافة: لقد وجدت للتو، وأنني يمكن أن تتطابق مع اسم الجهاز من D3DADAPTER_IDENTIFIER9
إلى اسم جهاز Win32 و. ومع ذلك، هناك طريقة لمجرد الحصول على الأجهزة الفعلية من D3D في المقام الأول؟
المحلول
في حالة شخص مهتم، تبين لي كيفية القيام بذلك: NumberOfAdaptersInGroup
in وD3DCAPS9
يحتوي على عدد من النواتج لسيد مجموعة محول (جهاز فعلي مع سلاسل مبادلة متعددة) وصفر للمرؤوس ( "غير المادية "محولات). يذكر MSDN:
وNumberOfAdaptersInGroup هو 1 محولات التقليدية، وأكبر من 1 لمحول سيد بطاقة متعددة النبات. سوف تكون القيمة 0 لمحول تابع لبطاقة متعددة النبات. كل بطاقة يمكن أن يكون رئيسي واحد على الأكثر، ولكن قد يكون العديد من المرؤوسين.
اقتباس فقرة>