我正在尝试用ID3D10RasterizerState创建一个direct3D10,然后调用
ID3D10Device::RSSetState()有了正确的信息。然而,每当窗口被重新缩放,或者当应用程序转到全屏时,光栅状态似乎会重置到默认状态。我试图用WM_SIZE消息来设置州,但尴尬的是,似乎什么也没发生.
当我调用RSSetState()每个帧时,它正常工作,但这似乎效率很低。
有人知道解决这个问题的办法吗?它似乎在msdn上没有得到很好的记录。
代码:
bool TestGameApp::InitGame()
{
D3D10_RASTERIZER_DESC desc;
desc.AntialiasedLineEnable = TRUE;
desc.CullMode = D3D10_CULL_NONE;
desc.DepthBias = 0;
desc.DepthBiasClamp = 0.0f;
desc.FillMode = D3D10_FILL_SOLID;
desc.FrontCounterClockwise = false;
desc.MultisampleEnable = true;
desc.ScissorEnable = FALSE;
desc.SlopeScaledDepthBias = 0.0f;
m_pD3DDevice->CreateRasterizerState(&desc,m_pRSState);
m_pD3DDevice->RSSetState(m_pRSState);
//...more code
}WndProc:
switch( message )
{
case WM_SIZE:
{
m_pD3DDevice->RSSetState(m_pRSState);
break;
}
}发布于 2011-11-10 22:59:14
把每一帧都设置好。通常,您希望最小化框架中呈现状态更改的数量,但不需要担心设置一帧一次的光栅化状态对性能的影响。将其设置为每个框架,还允许您为调试而启用和禁用线框呈现。
https://stackoverflow.com/questions/8068023
复制相似问题