Fullscreen Direct3D not working on HTC Diamond

Started by
0 comments, last by don 13 years, 11 months ago
Hi, I have a problem running a Direct3D app on full screen on a HTC Diamond: no matter which way I create the Direct3D device, by making a window that covers the full screen, or by creating a fullscreen device, all I see is the background of the window. Nothing rendered in Direct3D is shown. If I use a window that is, for example, one pixel shorter than the full screen - everything works fine, but "real" full screen doesn't. The Direct3D examples from the WM6 SDK, which also create a full screen window, fail exactly the same way both on my phone and on another Diamond I've tested, so I assume it's not a problem with my configuration or ROM, but a common one. Also I've found a few similar questions on other forums, mentioning phones like the Touch Pro (with very similar hardware), but no answers. To create a fullscreen window I do the following: g_screenWidth = GetSystemMetrics(SM_CXSCREEN); g_screenHeight = GetSystemMetrics(SM_CYSCREEN); g_hWndMain = CreateWindow(szWindowClass, szTitle, WS_VISIBLE, 0, 0, g_screenWidth, g_screenHeight, NULL, NULL, hInstance, NULL); SHFullScreen(g_hWndMain, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON); /* ... */ D3DMPRESENT_PARAMETERS presentParameters; memset(&presentParameters, 0, sizeof presentParameters); presentParameters.SwapEffect = D3DMSWAPEFFECT_DISCARD; presentParameters.Windowed = true; HRESULT hr = g_d3d->CreateDevice(D3DMADAPTER_DEFAULT, D3DMDEVTYPE_DEFAULT, g_hWndMain, NULL, &presentParameters, &g_dev); All the functions succeed, however, nothing gets drawn on the screen besides the background of the window. The same thing happens when I create a fullscreen device, like below: // The same window creation stuff... // .... presentParameters.BackBufferWidth = g_screenWidth; presentParameters.BackBufferHeight = g_screenHeight; presentParameters.BackBufferFormat = D3DMFMT_UNKNOWN; presentParameters.BackBufferCount = 1; presentParameters.SwapEffect = D3DMSWAPEFFECT_DISCARD; presentParameters.Windowed = false; presentParameters.FullScreen_PresentationInterval = D3DMPRESENT_INTERVAL_DEFAULT; HRESULT hr = g_d3d->CreateDevice(D3DMADAPTER_DEFAULT, D3DMDEVTYPE_DEFAULT, g_hWndMain, NULL, &presentParameters, &g_dev); Again, all the calls seem to succeed, but nothing is visible on the screen. I've tried setting the pixel format explicitly - still nothing is drawn. But if I change the window in the first example to be one pixel less than the size of the screen, everything is displayed correctly. Does anyone know why this is happening and whether some solutions for running the app full-screen are possible? As far as I understand, VSync is available only in fullscreen mode, so I'd like to get it working - although one missing line of pixels isn't really visible on the Diamond VGA screen. And yet another unrelated question: does the graphics chip in the Diamond (part of Qualcomm MSM7201A) support render-to-texture? It seems to be not available in Direct3D, but it might still be exposed in OpenGL ES in that case...
Advertisement
Have you tried using the D3DM reference driver? It will be slow as mud but might tell you if it's a driver problem.

Do fullscreen DDraw apps work?

This topic is closed to new replies.

Advertisement