Могу ли я рисовать геометрические примитивы с помощью OpenGL, используя что-либо, кроме GLUT? - PullRequest
0 голосов
/ 05 марта 2012

Я знаю квадрики GLUT, я использовал его в нескольких программах, когда учился в школе. Сейчас я работаю над приложением реального мира и мне нужно нарисовать некоторые геометрические примитивы (кубы, сферы, цилиндры), но теперь я также знаю, что GLUT больше не поддерживается, и его последнее обновление было примерно в 2005 году. Поэтому мне интересно, есть ли что-то кроме квадрик GLUT для рисования таких геометрических фигур. Я спрашиваю, сделано ли что-нибудь, прежде чем я начну делать свои собственные из массивов вершин.

Ответы [ 4 ]

1 голос
/ 05 марта 2012

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

Тогда есть также GLU, обеспечивающий некоторые примитивы, но так же, как GLUT, это просто сопутствующая библиотека. Вам тоже не нужно.

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

Раньше был непосредственный режим в версиях, предшествующих ядру OpenGL-3 , но это устарело - хорошая загадка. Он использовался только для заполнения списков отображения, которые имели небольшое преимущество в производительности при использовании косвенного GLX. С VBO (хранилищем атрибутов вершин на стороне сервера (= GPU)) это больше не проблема.

1 голос
/ 05 марта 2012

Да, вы можете! Вы можете использовать собственный API операционной системы для создания окна с возможностями OpenGL.

Преимущество GLUT в том, что он облегчает эту задачу и является кроссплатформенным решением.

Существуют и другие кроссплатформенные библиотеки, с которыми сложнее работать, но обеспечивающие те же функции, что и Qt .

NeHe имеет огромное количество примеров, которые используют несколько различных технологий для достижения того, что вы ищете. Проверьте нижнюю часть страницы.

Вот демоверсия для Windows , которая создает окно и рисует в нем простой треугольник OpenGL. Эта демонстрация удаляет всю оконную раму, чтобы создать впечатление, что на экране плавает треугольник. И вот похожая демонстрационная версия для Linux .

0 голосов
/ 06 марта 2012

Пока GLUT не поддерживается, FreeGLUT имеет.Однако есть еще несколько альтернатив.

GLFW - это кроссплатформенная оконная система, которую легко запустить и запустить, а также предоставляет программисту контроль над основным циклом приложения.

SFML имеет поддержку многих языков, а также возможности интеграции с другими оконными схемами, в дополнение к кроссплатформенности.

Наконец, Qt - этоеще один популярный кроссплатформенный оконный фреймворк.

0 голосов
/ 05 марта 2012

Сейчас я работаю над приложением реального мира и мне нужно нарисовать некоторые геометрические примитивы (кубы, сферы, цилиндры),

На самом деле, я непомните что-нибудь кроме избытка, который обеспечил бы общие примитивы.Это может быть связано с тем, что эти универсальные примитивы очень легко реализовать с нуля.

Вы можете использовать другие библиотеки (например, libsdl или Qt) для initialize OpenGL, хотя.

Скорее всего, если вы найдете универсальную библиотеку для загрузки сеток (или что-нибудь, что предоставляет объект "Mesh"), тогда у него будут примитивы.

больше не поддерживаетсяи последнее обновление было примерно в 2005

Вопреки распространенному мнению, код не гниет и со временем не ухудшается.Независимо от того, сколько лет назад оно было написано, если оно все еще работает, вы можете его использовать.

Также существует проект FreeGLUT .Последнее обновление: 2012.

...