Мое Qt3DWindow мигает при перерисовке, и мне кажется, что двойная буферизация не работает должным образом - мне нужно что-то сделать?
Я пытался установить глобальные параметры формата поверхности setSwapBehavior(QSurfaceFormat::DoubleBuffer)
, но, похоже, это не помогло. Я использую QForwardRenderer по умолчанию, который описывается как рендеринг в буфер, но я не могу контролировать, когда происходит перестановка буфера
void SimulationWindow::initialiseScene()
{
this->defaultFrameGraph()->setClearColor(m_backgroundColour);
Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
this->setRootEntity(rootEntity);
Qt3DRender::QRenderSettings *renderSettings = this->renderSettings();
renderSettings->setRenderPolicy(Qt3DRender::QRenderSettings::OnDemand);
}
Это единственная настройка, которую я делаю для стандартного Qt3DWindow. Использование QRenderSettings :: Always не имеет значения. У меня такое ощущение, что есть настройка, доступная либо через QFrameGraphNode, либо через QForwardRenderer, которая должна что-то исправлять, либо, возможно, существует способ прямого управления, когда происходит замена заднего буфера. Это, конечно, происходит не только когда я вызываю requestUpdate (), чего я и ожидал. Или, возможно, мне нужно использовать что-то другое, кроме QForwardRenderer, чтобы получить больше контроля.
Редактировать: Я обнаружил нечто, называемое Qt3DRender :: QNoDraw, которое выглядит обнадеживающим. Предложение в документации заключается в том, что он подключен к QClearBuffers, который является частью QForwardRenderer, но не доступен для общественности.