где определяется 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, предоставляемые платформой, не будут включать этот макрос.
посмотреть также:
- http://www.opengl.org/resources/faq/technical/extensions.htm
- http://www.gamedev.net/community/forums/topic.asp?topic_id=536666
ответ РА упростит обработку расширения-я предпочитаю использовать 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 () перед рендерингом сцены.
GL_MULTISAMPLE определяется в пределах glext.h, glext.h содержится внутри некоторого пакета linux: glew, gtkglext или с некоторым драйвером opengl (посмотрите здесь:http://www.opengl.org/registry/#headers).