где определяется GL MULTISAMPLE?

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

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

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

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

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

4 ответов


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

посмотреть также:

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


поскольку вы сказали, что используете библиотеки Qt, то GLEW etc, вероятно, не нужен, так как 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 () перед рендерингом сцены.


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


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