سؤال

أحاول إنشاء جهاز 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 ()).

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