إنشاء جهاز DirectX ملء الشاشة يسبب d3derr_invalidCall
-
28-09-2019 - |
سؤال
أحاول إنشاء جهاز DirectX في ملء الشاشة (حتى هذه النقطة الزمنية التي تم تنظيفها) ، لكن الجهاز لن يتم إنشاؤه وأحصل على فشل مكالمة غير صالحة.
هذا هو الكود الخاص بي:
md3dPP.BackBufferWidth = 1280;
md3dPP.BackBufferHeight = 720;
md3dPP.BackBufferFormat = D3DFMT_UNKNOWN;
md3dPP.BackBufferCount = 1;
md3dPP.MultiSampleType = D3DMULTISAMPLE_NONE;
md3dPP.MultiSampleQuality = 0;
md3dPP.SwapEffect = D3DSWAPEFFECT_DISCARD;
md3dPP.hDeviceWindow = mhMainWnd;
md3dPP.Windowed = false;
md3dPP.EnableAutoDepthStencil = true;
md3dPP.AutoDepthStencilFormat = D3DFMT_D24S8;
md3dPP.Flags = 0;
md3dPP.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
md3dPP.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
HR(md3dObject->CreateDevice(
D3DADAPTER_DEFAULT, // primary adapter
mDevType, // device type
mhMainWnd, // window associated with device
devBehaviorFlags, // vertex processing
&md3dPP, // present parameters
&m_pd3dDevice)); // return created device
لاحظ 'md3dpp.windowed = false ؛' ، إذا كان هذا صحيحًا ، فإن الجهاز ينشئ في وضع النوافذ.
أنا تحت الانطباع أنني ارتكبت خطأ في بعض القيم الافتراضية ولكن ليس لدي أي فكرة عن مكان النظر. هل هناك طريقة للحصول على تقرير أكثر تفصيلاً عن سبب فشل إنشاء الجهاز إلى ما بعد D3Derr_invalidCall؟
المحلول
تحتاج إلى تحديد قيمة مختلفة ل BackBufferFormat
لأن التطبيقات ذات النوافذ فقط تسمح بالقيمة D3DFMT_UNKNOWN
. اختر جهازًا مدعومًا بواسطة جهازك (يمكنك التحقق باستخدام CheckDeviceFormat ()).
لا تنتمي إلى StackOverflow