где определяется GL_MULTISAMPLE? - PullRequest
6 голосов
/ 17 ноября 2010

Несмотря на то, что я не рекомендовал читать Redbook OpenGL, я все еще этим занимаюсь, потому что это единственная книга 1002 *, предназначенная для начинающих, а учебные пособия и / или документация не могут полностью заменить книгу хотя очень важно Так много для оправдания себя:)

Теперь есть пример сглаживания с использованием мультисэмплинга, который включал glEnable(GL_MULTISAMPLE);

Я использую Qt и получаю ошибку компиляции, потому что GL_MULTISAMPLE - необъявленный идентификатор. В настоящее время я вижу следующие причины:

  • Для некоторых реализаций, включая ту, которая поставляется с Qt, GL_MULTISAMPLE не определен.
  • Это не в GL / gl.h или GL / glu.h, а скорее в каком-то другом заголовке, который не включен в <QGLWidget> или не входит в Qt
  • устарел / устарел

Правильна ли одна из вышеперечисленных причин? Если нет, то по какой причине у меня его нет и как его получить? Заранее спасибо

Ответы [ 4 ]

6 голосов
/ 23 февраля 2012

Поскольку вы сказали, что используете библиотеки Qt, GLEW и т. Д., Вероятно, не нужны, поскольку Qt обертывает и связывает расширения для вас.

Если вы используете QGLWidget , это особеннолегко.Проверьте этот пример , который поставляется с Qt и использует GL_MULTISAMPLE, в частности файл glwidget.cpp, который определяет:

#ifndef GL_MULTISAMPLE
#define GL_MULTISAMPLE  0x809D
#endif

Если вы хотите настроить образцы FSAA, передайте свой собственный QGLFormatк конструктору QGLWidget, например:

QGLFormat format;
format.setDoubleBuffer(true);
format.setDepth(false);
format.setAlpha(false);
format.setSampleBuffers(true);
format.setSamples(4);
QGLWidget *glw = new QGLWidget(format);

Измените format.setSamples(4) по своему вкусу.Обязательно добавьте glEnable(GL_MULTISAMPLE) в функцию paintGL () перед рендерингом вашей сцены.

4 голосов
/ 17 ноября 2010

GL_MULTISAMPLE - это , используемый для расширения до OpenGL, до версии 1.3, и будет ли он реализован, зависит от реализации вашего оборудования / драйверов / поставщика.Вы можете использовать GL_MULTISAMPLE_ARB вместо этого.Если вы работаете в Windows, то предоставляемые платформой заголовки OpenGL не будут включать этот макрос.

См. Также:

Реакция RA упростит обработку расширений - я предпочитаю использовать GLee сам, но они в значительной степени взаимозаменяемы (а GLee выполняет ленивый init, который помог мне исправить критическую проблему в Solaris), но GLEW постоянно обновляется (GLee устарел, поскольку Кос обратил на это мое внимание).

3 голосов
/ 17 ноября 2010

Библиотека для помощи с расширениями http://glew.sourceforge.net/

1 голос
/ 17 ноября 2010

GL_MULTISAMPLE определен в glext.h, glext.h содержится в некотором пакете linux: glew, gtkglext или с некоторым драйвером opengl (посмотрите здесь: http://www.opengl.org/registry/#headers).

...