Russian Qt Forum

Qt => Общие вопросы => Тема начата: Torvald от Май 15, 2017, 17:57



Название: QPainter рисует текст в полосочку (OpenGL) [Решено]
Отправлено: Torvald от Май 15, 2017, 17:57
Рисую текст на QOpenGLWidget, в методе paintGL через QPainter:

Код
C++ (Qt)
QPainter p(this);
QFont font(sfont);
font.setPixelSize(size);
p.setPen(QColor::fromRgb(r, g, b));
p.setFont(font);
p.resetTransform();
p.translate(pos);
p.rotate(angle);
p.drawText(rect, text);
p.end();

Все переменные я переименовал для упрощения, гарантируется, что у них адекватные тип и значения.
На всех ПК текст выглядит нормально, и только на одном (видеокарта GeForce GT 630) отображается в полосочку (скриншот).
В чем может быть проблема?


Название: Re: QPainter рисует текст в полосочку (OpenGL)
Отправлено: ssoft от Май 15, 2017, 18:41
Проблема может быть во включенном сглаживании для полигонов, хотя это не свойственно для видеокарт NVIDIA.


Название: Re: QPainter рисует текст в полосочку (OpenGL)
Отправлено: Torvald от Май 15, 2017, 18:44
Тоже подумал про сглаживание, но во-первых странная организация полигонов, а во-вторых видеокарта не того уровня, чтобы косячить на сглаживании.


Название: Re: QPainter рисует текст в полосочку (OpenGL)
Отправлено: Igors от Май 16, 2017, 10:52
Проверить stencil буфер, напр на всякий случай обнулить его перед выводом текста. А вообще это довольно больное место, многие вызовы gl могут мешать последующему выводу текста. Начать с полного отключения gl рисования (оставить только текст)

Да, и кстати - на форуме есть раздел OpenGL


Название: Re: QPainter рисует текст в полосочку (OpenGL)
Отправлено: Torvald от Май 22, 2017, 20:00
Вот что происходит, если отключить сглаживание. При этом полоски при малом масштабе остались.
Очистка стенсила не помогла.


Название: Re: QPainter рисует текст в полосочку (OpenGL)
Отправлено: Torvald от Май 22, 2017, 20:28
Разобрался. Во всем виноват glEnable(GL_POLYGON_SMOOTH)
А ведь сталкивался с этим лет 7 назад..