Портирование проекта к OpenGL3

Я работаю над C++ межплатформенное приложение OpenGL (Windows, Linux и MacOS), и я задаюсь вопросом, могли ли некоторые из Вас совместно использовать некоторые советы относительно портирования крупного приложения к OpenGL 3. Причина я изучаю OpenGL 3, состоит в том, потому что я думаю, что мы могли извлечь выгоду много из использования новых "Синхронизирующих объектов". Nvidia поддерживала такое расширение начиная с Geforce 256 дней (gl_nv_fences), но там, кажется, не эквивалентная функциональность на аппаратных средствах ATI перед OpenGL 3.0 +...

Наш код делает довольно интенсивное использование glut/freeglut, glu функции, OpenGL 2 расширения и CUDA (на поддерживаемом оборудовании). Проблема, с которой я теперь сталкиваюсь, состоит в том, что "gl3.h" и "gl.h" являются взаимно несовместимыми (как указано в gl3.h). Вы парни знают, существует ли эквивалентный избыток GL3? Кроме того, смотря на заголовочные файлы CUDA-инструментария, кажется, что совместимость GL-CUDA только доступна при использовании более старых версий OpenGL... (cuda_gl_interop.h, включает gl.h...). Я пропускаю что-то?

Большое спасибо за Вашу справку.

7
задан El Weon 3 June 2010 в 14:29
поделиться

1 ответ

Последним обновлением перенасыщения была версия 3.7, примерно 10 лет назад. Принимая это во внимание, я сомневаюсь, что он когда-либо будет поддерживать OpenGL 3.x (или 4.x).

Люди, работающие над OpenGlut , похоже, рассматривают возможность поддержки OpenGL 3.x, но еще ничего не сделали с этим.

FLTK имеет (частичное) моделирование перенасыщения, но оно настолько частичное, что программа, которая «интенсивно использует перенасыщение», может вообще не работать с ним. Поскольку FLTK находится в активной разработке, я предполагаю, что в конечном итоге он будет поддерживать OpenGL 3.x (или 4.x), но я не верю, что он еще предоставлен, и может возникнуть вопрос, как скоро он будет .

Edit: Что касается CUDA, очевидным (хотя, безусловно, нетривиальным) ответом было бы использование OpenCL вместо этого. Это значительно лучше совместимо как с оборудованием (например, с платами ATI / AMD), так и с более новыми версиями OpenGL.

Остается glu. Честно говоря, я не думаю, что на это есть четкий или очевидный ответ. OpenGL отодвигается от поддержки таких вещей, как glu, и вместо этого отказывается от поддержки еще большего количества слабо-подобных функций, которые раньше были частью базовой спецификации OpenGL (например,, все примитивы манипуляции с матрицами). Лично я считаю, что это ошибка, но хорошо это или плохо, все обстоит именно так. К сожалению, glu немного похожа на перенасыщение - последнее обновление спецификации было в 1998 году и соответствует OpenGL 1.2. Это не делает вероятным обновление. К сожалению, я не знаю и реальной замены ему. Очевидно, что существуют и другие графические библиотеки, которые предоставляют (по крайней мере, некоторые) аналогичные возможности, но все они, о которых я могу думать, потребуют существенной переписывания.

3
ответ дан 7 December 2019 в 16:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: