|
|

楼主 |
发表于 2008-8-30 08:26:00
|
显示全部楼层
Re:请教 SwapChain问题
另外有时还会出现,显示貌似正常,但纹理上多了一些斑点。若多次改变窗口大小,问题就会愈加严重。
窗口大小改变时,将swapchain先release掉,在重新创建。代码如下:
D3DPRESENT_PARAMETERS d3dpp;
memset(&d3dpp, 0, sizeof(d3dpp));
d3dpp.BackBufferCount = 1;
d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
d3dpp.BackBufferWidth = rt.Width();
d3dpp.BackBufferHeight = rt.Height();
d3dpp.hDeviceWindow = m_hwnd;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.Windowed = true;
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
hr = p3dDevice->CreateAdditionalSwapChain(&d3dpp, &m_pSwapChain);
if(m_pSwapChain)
{
hr = m_pSwapChain->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &m_pBack);
ASSERT(SUCCEEDED(hr) && m_pBack);
}
if(m_pBack)
{
hr = p3dDevice->CreateDepthStencilSurface(d3dpp.BackBufferHeight,d3dpp.BackBufferWidth,
D3DFMT_D16, D3DMULTISAMPLE_NONE, 0, false, &m_pStencil, 0);
if(m_pStencil == NULL)
{
ASSERT(hr == D3DERR_OUTOFVIDEOMEMORY);
}
}
|
|