Original Post
Does anyone get lags when minimizing window? It's D3DApp without rendering. If I do rendering lags disappears. #include #include #define WIDTH 800 #define HEIGHT 600 #define WINDOWED true void render(); LRESULT CALLBACK MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); LPDIRECT3D9 m_pD3D = NULL; LPDIRECT3DDEVICE9 m_pDevice = NULL; LPDIRECT3DSURFACE9 m_pBackSurface = NULL; D3DPRESENT_PARAMETERS m_parameters; D3DDISPLAYMODE m_displayMode; int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow) { WNDCLASSEX wc; ZeroMemory(&wc, sizeof(WNDCLASSEX)); HWND m_hwnd; wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; wc.lpfnWndProc = MsgProc; wc.hInstance = hThisInstance; wc.hbrBackground = (HBRUSH)(GRAY_BRUSH); wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.lpszClassName = "ClassName"; RegisterClassEx(&wc); m_hwnd = CreateWindow("ClassName", "", WS_OVERLAPPEDWINDOW, 30, 30, WIDTH, HEIGHT, NULL, NULL, wc.hInstance, NULL); ShowWindow(m_hwnd, nCmdShow); UpdateWindow(m_hwnd); m_pD3D = Direct3DCreate9(D3D_SDK_VERSION); m_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &m_displayMode); ZeroMemory(&m_parameters, sizeof(D3DPRESENT_PARAMETERS)); m_parameters.hDeviceWindow = m_hwnd; m_parameters.BackBufferCount = 1; m_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD; m_parameters.EnableAutoDepthStencil = TRUE; m_parameters.AutoDepthStencilFormat = D3DFMT_D16; m_parameters.FullScreen_RefreshRateInHz = 0; m_parameters.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER; m_parameters.BackBufferWidth = WIDTH; m_parameters.BackBufferHeight = HEIGHT; m_parameters.BackBufferFormat = WINDOWED ? m_displayMode.Format : D3DFMT_X8R8G8B8; m_parameters.Windowed = WINDOWED; m_parameters.PresentationInterval = WINDOWED ? 0 : D3DPRESENT_INTERVAL_IMMEDIATE; m_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &m_parameters, &m_pDevice); MSG msg; ZeroMemory(&msg, sizeof(msg)); while(msg.message != WM_QUIT) { if(PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { render(); } } } LRESULT CALLBACK MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { if(msg == WM_DESTROY) { PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, msg, wParam, lParam); } void render() { m_pDevice->Clear(0,0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(160, 240, 80), 0.0f, 0); m_pDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &m_pBackSurface); m_pDevice->BeginScene(); m_pDevice->EndScene(); m_pBackSurface->Release(); m_pDevice->Present(NULL, NULL, NULL, NULL); } Any suggestions how to repair it, or is it DX problem, or mine?