好的,所以当我在度假时,我正在使用我的笔记本电脑,我决定从Win32 API转移到Qt,一切正常。直到我回到我的电脑上,就是这样。这个问题只发生在我的电脑而不是我的笔记本电脑上我使用了win merge来尝试检测任何差异并且没有。
我实现这个的方式是我有一个从QWidget派生的GameView类,我已经覆盖了paintEngine函数什么都不做,我将DirectX HWND设置为游戏视图QWidget的WId。
非常感谢对此的任何帮助
在初始化期间调用此方法来创建窗口
bool Engine::CreateDisplay()
{
m_pQtApp = new QApplication(m_nArgCount, m_pArgV);
m_pGameWindow = new GameWindow(this);
m_pGameWindow->show();
m_pGameView = new GameView(this);
m_pGameView->setParent(m_pGameWindow);
m_pGameView->show();
m_pGameView->resize(800, 600);
m_pGameWindow->setCentralWidget((QWidget*)m_pGameView);
return true;
}
然后,一旦所有内容都被初始化,这就被称为
int Engine::StartGameLoop()
{
m_bIsRunning = true;
m_pCurrentWorld->BeginPlay();
//MSG msg {};
while(m_bIsRunning)
{
/*if(PeekMessage(&msg, m_hWnd, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}*/
m_pQtApp->processEvents();
if(m_bIsRunning)
{
//m_pGameView->update();
Update();
Render();
}
}
m_pCurrentWorld->EndPlay();
return 0;
}
这是我修改的调整大小事件
void GameView::resizeEvent(QResizeEvent* pEvent)
{
if(m_pEngine->GetGraphics())
m_pEngine->GetGraphics()->SetResolution(pEvent->size().width(), pEvent->size().height());
//QWidget::resizeEvent(pEvent);
}