我从一本书的例子中得到了一个简单的Direct3D程序。它首先创建一个win 32窗口,然后创建一个空白的Direct3D场景。我正在尝试完全重新编写代码,因此它更加模块化,而且风格更舒适。
现在,当我调用Render
函数时,它会崩溃。功能是:
void Render(void)
{
float clearColor[4] = { 0.0f, 0.0f, 0.25f, 1.0f };
d3dContext_->ClearRenderTargetView(backBufferTarget_, clearColor);
swapChain_->Present(0, 0);
}
wWinMain功能如下:
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE prevInstance, LPWSTR cmdLine, int cmdShow)
{
InitWindow();
InitD3D();
InitScene();
while (!progFinished)
{
MessagePump();
Render();
}
return 0;
}
据我所知,当它遇到d3dContext_->ClearRenderTargetView(backBufferTarget_, clearColor);
时会崩溃原始代码的渲染函数为:
while( msg.message != WM_QUIT )
{
if( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
// Update and Draw
demo->Update( 0.0f );
demo->Render( );
}
}
我从演示标题和实现文件中取出了所需的组件。 我想我还没有完全理解DirectX'信息'在哪里可以继续显示程序。任何帮助将不胜感激。
答案 0 :(得分:0)
我忘了更新这个答案。问题出现在我没有提到的代码领域:
HWND hwnd = CreateWindowA("DX11BookWindowClass", "Blank Win32 Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, rc.right - rc.left, rc.bottom - rc.top, NULL, NULL, hInstance, NULL);
HWND先前被定义为全局,然后再在本地再次定义。我所要做的就是删除HWND
并且它有效。
由于