DirectX 10 qurilmasi va almashtirish zanjirini yaratishda ' Xato kodi: E_FAIL '

Men "Direct3D 10.0 bilan 3D o'yin dasturlashiga kirish" kitobining oddiy DX darsliklari bilan ishlayapman. D3D10CreateDeviceAndSwapChain funksiyasidan foydalanganimda ba'zi muammolarga duch keldim. Quyidagi kod:

        // Fill out a DXGI_SWAP_CHAIN_DESC to describe our swap chain.

    DXGI_SWAP_CHAIN_DESC sd;


    sd.BufferDesc.Width  = mClientWidth;
    sd.BufferDesc.Height = mClientHeight;

    sd.BufferDesc.RefreshRate.Numerator = 60;
    sd.BufferDesc.RefreshRate.Denominator = 1;

    sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
    sd.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
    sd.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;

    // No multisampling.
    sd.SampleDesc.Count   = 1;
    sd.SampleDesc.Quality = 0;

    sd.BufferUsage  = DXGI_USAGE_RENDER_TARGET_OUTPUT;
    sd.BufferCount  = 1;
    sd.OutputWindow = mhMainWnd;
    sd.Windowed     = true;
    sd.SwapEffect   = DXGI_SWAP_EFFECT_DISCARD;
    sd.Flags        = 0;


    // Create the device.

    UINT createDeviceFlags = 0;

#if defined(DEBUG) || defined(_DEBUG)  
    createDeviceFlags |= D3D10_CREATE_DEVICE_DEBUG;
#endif

    HR( D3D10CreateDeviceAndSwapChain(
            0,                 //default adapter

            md3dDriverType,
            //D3D10_DRIVER_TYPE_HARDWARE,

            0,                 // no software device
            createDeviceFlags, 

            D3D10_SDK_VERSION,
            &sd,
            &mSwapChain,
            &md3dDevice) );

Va xato haqida ma'lumot:

Xato kodi: E_FAIL (0x80004005) Chaqirilmoqda: D3D10CreateDeviceAndSwapChain(.....

D3D10CreateDeviceAndSwapChain ning "createDeviceFlags" parametrini 0 ga o'zgartirganimda, u ishlaydi. Lekin nega?? Sababini bilmoqchiman kim ayta oladi ???


person ZKH    schedule 10.03.2013    source manba


Javoblar (3)


MSDN deydi

Nosozliklarni tuzatish qatlamini qo'llab-quvvatlaydigan qurilmani yaratish uchun siz DirectX SDK ni o'rnatishingiz kerak (D3D10SDKLayers.DLL ni olish uchun) va keyin D3D10CreateDevice ga qo'ng'iroq qilishda D3D10_CREATE_DEVICE_DEBUG bayrog'ini ko'rsatishingiz kerak.

Shunday qilib, siz SDK ni o'rnatdingizmi va sizda D3D10SDKLayers.DLL bormi?

person Roger Rowland    schedule 10.03.2013
comment
Men Microsoft DirectX SDK SDK ni o'rnataman (2010 yil iyun) C:\Windows\System32 da D3D10SDKLayers.DLL mavjud. - person ZKH; 10.03.2013
comment
Bu SDK ning notoʻgʻri oʻrnatilgani boʻlishi mumkin – baʼzi bir mos kelmaydigan komponentlar boʻlishi mumkin – SDK ni toʻliq oʻchirib, qayta oʻrnatishga urinib koʻrsangiz nima boʻlishini koʻrasizmi? Bundan tashqari, agar Visual Studio dan foydalansangiz, VC++ kataloglarida to'g'ri joyda DX va kutubxonalar mavjudligiga ishonch hosil qiling - Windows SDK dan keyin kelishi kerak. - person Roger Rowland; 11.03.2013

Menda aynan shu muammo bor. D3D10_CREATE_DEVICE_DEBUG bayrog'ini 0 ga o'zgartirganimda uni ishga tushirdim. Menimcha, mening kompyuterim negadir disk raskadrovka qatlamini yaratishda muammoga duch kelmoqda. Nima uchun ekanligini bilmayman, lekin hech bo'lmaganda men shu tarzda oyna yarata oldim.

person Philip    schedule 22.03.2013
comment
Qaerdadir yangilanish internetdagi sharhlar va postlarga ko'ra, ba'zi eski qurilmalarda ushbu disk raskadrovka rejimini buzganga o'xshaydi. Yuk. - person Philip; 18.07.2013

Menda 2010 yil iyun oyida DirectX SDK bilan Windows 8 da VS2010 bilan bir xil muammo bor.

Agar disk raskadrovka qatlamini o'chirib qo'ysam, hamma narsa yaxshi ishlaydi. Bu, albatta, juda zerikarli, chunki DirectX disk raskadrovka qatlami juda qulay.

Men DirectX SDK-ni muvaffaqiyatli o'rnatish uchun ushbu vaqtinchalik yechimni ham sinab ko'rdim, lekin bu menga yordam bermadi: http://blogs.msdn.com/b/chuckw/archive/2011/12/09/known-issue-directx-sdk-june-2010-setup-and-the-s1023-error.aspx

Buning uchun allaqachon yechim bormi?

person Kenzo ter Elst    schedule 15.06.2013