0
我從一本書中的示例中運行了一個簡單的Direct3D程序。它首先創建一個贏得32個窗口,然後創建一個空白的Direct3D場景。我試圖完全重新調整代碼,使它更模塊化,風格更舒適。Direct3D 11初始化和渲染部分
現在,當我打電話給我的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'信息'的位置,它允許它繼續顯示程序。任何幫助將不勝感激。
*「It is crashing」* - 那麼錯誤信息是什麼,調試器說什麼?如果你在'Render'函數上放置了一個斷點並逐行執行,那麼你所有的變量是否都被正確初始化? –
啊,這是非常有益的感謝。我現在看到,我正在嘗試從NULL指針讀取錯誤。在演示代碼中,他們創建了一個演示對象,但我沒有做過那樣的事情。謝謝 –
我一直在調查,但仍無法弄清楚這個問題。看來,在'd3dContext _-> ClearRenderTargetView(backBufferTarget_,clearColor);' backBufferTarget_的值爲0x000。當我將它移到InitD3D區域時,我的swapChain_的值爲0X000。這似乎是我已經初始化D3D後,我的程序不記得我已經設置好了。但我非常肯定,從我在網上找到的例子中,他們以類似的方式做到了這一點,併發揮了作用。任何想法都會很棒,謝謝。 –