Russian Qt Forum
Ноябрь 23, 2024, 16:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Как включить антиалиасинг в OpenGL?  (Прочитано 10450 раз)
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« : Март 05, 2013, 16:38 »

Рисую в QGLWidget. Знатоки, подскажите, как грамотно включить антиалиасинг в сцене?

Вот такая штука не работает:
Код
C++ (Qt)
   glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
   glEnable(GL_POLYGON_SMOOTH);
 
« Последнее редактирование: Март 12, 2013, 15:52 от navrocky » Записан

Гугль в помощь
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #1 : Март 06, 2013, 11:03 »

Что, совсем никто не знает  Непонимающий
Записан

Гугль в помощь
Figaro
Гость
« Ответ #2 : Март 06, 2013, 11:21 »

Не любитель я OpenGL, но тему такую видел то ли на РСДН, то ли на Stackoverflow...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Март 06, 2013, 11:33 »

Ну знать тут особо нечего  Улыбающийся Во всяком случае Ваши 2 строчки лучше переставить местами (или вообще не делать glEnable для этой переменной). Если не поможет - попробуйте GL_FASTEST, дальше компилите любой примерчик с анти-алиасом и смотрите работает ли там
Записан
ssoft
Гость
« Ответ #4 : Март 06, 2013, 12:45 »

OpenGL функциями так:

Код:

glEnable( mode ); // включает
glDisable( mode ); // выключает


значения mode
Код:
mode = GL_POINT_SMOOTH; // для точек
mode = GL_LINE_SMOOTH; // для линий
mode = GL_POLYGON_SMOOTH; // для полигонов

Если используется QPainter, нужно не забывать

Код:
QPainter painter(this);
painter.beginNativePainting();

...

painter.endNativePainting();

Если не помогает, то нужен пример, когда не работает.
Записан
mitrich
Гость
« Ответ #5 : Март 06, 2013, 15:02 »

GL_POLYGON_SMOOTH - неудобная и устаревшая функциональность, оставленная для обратной совместимости.
Использовать надо мультисэмплинг. Для его включения, необходимо чтобы контекст отображения OpenGL создавался с поддержкой мультисэмплинга.

Перед созданием QGLWidget:
Код
C++ (Qt)
QGLFormat fmt;
fmt.setSampleBuffers(true);
fmt.setSamples(8); //2, 4, 8, 16
 
QGLFormat::setDefaultFormat(fmt); //либо так, либо передавать fmt непоср. в конструктор QGLWidget или QGLFormat
 

После:
Код
C++ (Qt)
glEnable(GL_MULTISAMPLE);
 
« Последнее редактирование: Март 06, 2013, 15:13 от mitrich » Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #6 : Март 07, 2013, 13:20 »

GL_POLYGON_SMOOTH - неудобная и устаревшая функциональность, оставленная для обратной совместимости.
Использовать надо мультисэмплинг. Для его включения, необходимо чтобы контекст отображения OpenGL создавался с поддержкой мультисэмплинга.

Два чая этому господину! Отлично работает.
Записан

Гугль в помощь
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.281 секунд. Запросов: 23.