Direct3D 11初始化和渲染部分

时间:2013-11-24 03:17:34

标签: directx direct3d

我从一本书的例子中得到了一个简单的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'信息'在哪里可以继续显示程序。任何帮助将不胜感激。

1 个答案:

答案 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并且它有效。

由于