كيف يمكنني تحديد يعرض تعلق على نفس الجهاز الفعلي باستخدام Direct3D9؟

StackOverflow https://stackoverflow.com/questions/680997

سؤال

وعن طريق 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 في المقام الأول؟

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

المحلول

في حالة شخص مهتم، تبين لي كيفية القيام بذلك: NumberOfAdaptersInGroupin وD3DCAPS9 يحتوي على عدد من النواتج لسيد مجموعة محول (جهاز فعلي مع سلاسل مبادلة متعددة) وصفر للمرؤوس ( "غير المادية "محولات). يذكر MSDN:

<اقتباس فقرة>   

وNumberOfAdaptersInGroup هو 1 محولات التقليدية، وأكبر من 1 لمحول سيد بطاقة متعددة النبات. سوف تكون القيمة 0 لمحول تابع لبطاقة متعددة النبات. كل بطاقة يمكن أن يكون رئيسي واحد على الأكثر، ولكن قد يكون العديد من المرؤوسين.

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