Opened 14 years ago
Last modified 9 years ago
#5640 closed defect
Poor support of Direct3D on windows XP — at Initial Version
Reported by: | Vladimir | Owned by: | |
---|---|---|---|
Component: | 3D support | Version: | VirtualBox 3.1.0 |
Keywords: | Cc: | ||
Guest type: | Windows | Host type: | Linux |
Description
The following C++ code hangs.
HRESULT hr = S_OK; m_d3dobj = Direct3DCreate9(D3D_SDK_VERSION); RECT rc; GetWindowRect(m_hwnd, &rc); int wnd_width = rc.right - rc.left; int wnd_height = rc.bottom - rc.top; if (wnd_width || wnd_height) { m_wnd_width = wnd_width; m_wnd_height = wnd_height; } wnd_width += wnd_width % 2; D3DDISPLAYMODE d3ddm; hr = IDirect3D9_GetAdapterDisplayMode(m_d3dobj, D3DADAPTER_DEFAULT, &d3ddm); if (FAILED(hr)) return false; m_texture_format = d3ddm.Format; D3DPRESENT_PARAMETERS d3dpp; memset(&d3dpp, 0, sizeof(D3DPRESENT_PARAMETERS)); d3dpp.Flags = D3DPRESENTFLAG_VIDEO; d3dpp.Windowed = TRUE; d3dpp.hDeviceWindow = m_hwnd; d3dpp.BackBufferWidth = m_wnd_width; d3dpp.BackBufferHeight = m_wnd_height; d3dpp.SwapEffect = D3DSWAPEFFECT_COPY; d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; d3dpp.BackBufferFormat = m_texture_format; d3dpp.BackBufferCount = 1; d3dpp.EnableAutoDepthStencil = FALSE; hr = IDirect3D9_CreateDevice(m_d3dobj, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &m_d3ddev);
I am using DirectX SDK 9. of March 2008, Visual Studio 2008 SP1.
The call to IDirect3D9_GetAdapterDisplayMode has returned d3ddm.Format = D3DFMT_X8R8G8B8
Guest OS is Windows XP SP3, russian.
Host OS is Ubuntu 9.10, 32-bit, with all updates.
The output of uname -a:
$ uname -a Linux veremeev 2.6.31-15-generic #50-Ubuntu SMP Tue Nov 10 14:54:29 UTC 2009 i686 GNU/Linux
Host video adapter is NVidia GeForce 8400 GS, driver version is 190.42
Note:
See TracTickets
for help on using tickets.
VBox.log