direct3D10 で ID3D10RasterizerState を作成しようとしています。
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;
}
}