Re[4]: Получение строки ошибки в DirectX
От: Wallrunner  
Дата: 11.01.07 13:15
Оценка:
А>Код инициализации можно увидеть ???
А>Сам тестирую на SIS 640 — все работает...

Уж и не ожидал, что кто-то еще ответит .
Код вот такой:


        HRESULT hr;
        const TCHAR * errorDesc;

        if (NULL == (mD3D = Direct3DCreate9(D3D_SDK_VERSION)))
        {
            throw Direct3DException(_T("Error occured while initializing Direct3D"));
        }

        D3DDISPLAYMODE display;
        if (FAILED(hr = mD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &display)))
        {
            errorDesc = DXGetErrorDescription9(hr);
            throw Direct3DException(_T("Error occured while getting display mode: ") + String(errorDesc));
        }

        D3DPRESENT_PARAMETERS direct3DParameters; 
        ZeroMemory( &direct3DParameters, sizeof(direct3DParameters) );
        direct3DParameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
        direct3DParameters.BackBufferFormat = display.Format;
        direct3DParameters.EnableAutoDepthStencil = TRUE;
        direct3DParameters.AutoDepthStencilFormat = D3DFMT_D16;

        Settings * settings = Engine::getInstance().getSettings();
        if (settings->getFullscreen())
        {
            direct3DParameters.Windowed = FALSE;
            direct3DParameters.BackBufferWidth = settings->getScreenWidth();
            direct3DParameters.BackBufferHeight = settings->getScreenHeight();
            direct3DParameters.BackBufferCount = 3;
            direct3DParameters.FullScreen_RefreshRateInHz = display.RefreshRate;
        }
        else
        {
            direct3DParameters.Windowed = TRUE;
        }

        D3DDeviceKeeper::D3DDevicePointer device;
        if ( FAILED(hr = mD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, mhWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING,    &direct3DParameters, &device)) )
        {
            errorDesc = DXGetErrorDescription9(hr);
            throw Direct3DException(_T("Error occured while creating Direct3D device: ") + String(errorDesc));
        }



D3DDeviceKeeper и всякая другая ботва это мои заморочки, на них можно внимания не обращать, в данном случае там просто хранится указатель на девайс.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.