Кажется, что QOpenGLWidget::paintEvent
и QOpenGLWidget::resizeEvent
делают нежелательные glClear
.
Я не хочу очищать экран перед каждым paintGL
вызовом, но Qt делает это автоматически, поэтому я '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 100 * * * * * * * * * * * * * * * * * * * 101 * *прямо здесь):
void GlWidget::resizeEvent(QResizeEvent* event)
{
// QWidget::resizeEvent(event); // i've also tried this, doesn't help
resizeGL(event->size().width(), event->size().height());
}
Когда я изменяю размер окна, что-то идет не так, например: если я уменьшаю высоту окна, нарисованный текст (он рисуется с помощью QPainter
после paintGL
) имеет меньшевысота и буквы выглядят как сжатые, также сглаживание не работает должным образом.Вы можете увидеть это на картинке, посмотреть на текст, не обращайте внимания на цветную область.
Итак, у меня есть 2 вопроса:
1) Хотя рендеринг (без изменения размера) работает нормально, я пропускаю некоторые вызовы в переопределенных paintEvent
?
2) Какие вызовы я должен добавить в переопределенные resizeEvent
, которые являютсявызывается в базовом классе resizeEvent
?
UPD: У меня возникла простая идея - просто открыть исходный код qopenglwidget.cpp и посмотреть, как он работает, и исправить его для моих нужд., Попробую когда-нибудь.