Archived

This topic is now archived and is closed to further replies.

Carradine

D3DPOOL_DEFAULT fullscreen problems with Win ME/98

Recommended Posts

This is a problem I have trying to fix for the past 5 days but with no luck. I am creating some index and vertex buffers for rendering using D3DPOOL_DEFAULT. I have the D3D device running in its own MFC window, and it can be resized, and make it go fullscreen. When the window is told to go fullscreen on a windows ME/98 system, the debugger reports that the D3DPOOL_DEFAULT buffers have not been reset, however, when the program simply resizes the window, everything works perfectly. On windows XP, there is no problem with any type D3DPOOL managment of any kind. When only resizing the window on any OS, the program works. And after each resize/fullscreen change, gpd3device->Reset(&d3dpp); is called. This is obviously why the error occurs using D3DPOOL_DEFAULT, but ONLY for windows ME and 98, and ONLY in fullscreen mode. When changing to D3dPOOL_SYSTEMMEM or MANAGED, fullscreen mode is created, but the vertex and index buffers created will not show any information on screen. The code difference between resizing and going fullscreen is very minimal. When going into and returning from fullscreen only 4 extra lines are called: d3dpp.BackBufferFormat=m_Format; d3dpp.Windowed = m_Windowed; d3dpp.BackBufferWidth = m_Width; d3dpp.BackBufferHeight = m_Hieght; then the memory is freed, then reset() is called. What i have found out that if i simply comment out the line changing the windowed mode, the program will run on 98/ME. One other thing I noticed was windows ME calls the OnSize() function for the MFC window, when windows XP does not. I can only assume that windows 98/ME must go through a different set of processes when taking a window fullscreen. When debugging the code, the D3DPOOL_DEFAULT objects are released before calling reset(), though the error still occures with 98/ME. ( they have to or else it would not work in XP either). There must be something I am missing before I call my Reset() function that I must take into account for earlier versions of windows. Thanks for any help. Carradine

Share this post


Link to post
Share on other sites