Ответ 1
Вы можете получить все изменения здесь.
Приложения G-K переходят ко всем изменениям с OpenGL 3.1 в OpenGL 4.1, включая новые функции, устаревшие, полностью удаленные и т.д.
Кроме того, эта ссылка может быть "легче читать":)
Я понимаю, что OpenGL 4 и 3 довольно похожи, особенно 3.1 и 4.1. Поскольку оба они по существу выпущены вместе, может быть трудно понять обоснование OpenGL 4.0/4.1.
В предыдущих выпусках OpenGL малая версия увеличивается вверх до тех пор, пока существенные изменения не будут скопированы в новую основную версию. OpenGL 3.x и 4.x внесли обратно-несовместимые изменения API, а затем OpenGL 3.2 и 3.3 называются специально ветвями трех серий, которые не являются передовыми, тогда как 3.1 совместимо с 4.1 +
Какие ключевые отличия предлагают OpenGL 4.1 по сравнению с OpenGL 3.1, которые гарантируют, что он будет классифицирован под новой основной версией?
Бонус: может ли какая-либо из различий повысить производительность в любых ситуациях по сравнению с GL3 или просто доступностью?
Изменить: некоторые дополнительные выводы, основанные на ответах
OpenGL 3.3 был дополнен OpenGL 4.0, чтобы использовать как можно больше функциональных возможностей для более старого оборудования. Выбор между OpenGL 3 и 4, 3.3 может быть лучшим выбором иногда. 4.1 добавила совместимость с GL ES 2.0 и некоторые приятные функции.
Одной из больших различий в рабочих потоках будет добавление шагов программирования графического процессора в конвейере с помощью новых тесселяционных шейдеров. Другим будет несколько видовых экранов для рендеринга. Я полагаю, что новый уровень детализации изменит рабочий процесс, который я использую, и, возможно, еще немного, хотя я не изучил эту особенность в глубину.
Пожалуйста, дайте мне знать, если вы видите какие-либо заблуждения или области для улучшения.
Ключевые слова (видимо, удалены из ответа при запросе на мета. Для временного указания того, каков был фактический ответ.)
Приложение G - K Для функций OpenGL 3.1 через OpenGL 4.1 > особенности
Выпуск Xronos Group OpenGL 4.0 может быть "более простым для чтения":)
- Объекты Sampler
- Экранные массивы и шейдеры
texture_cube_map_array и texture_gather
GLSL 4.0 и динамический LOD
- shader_subroutine и sample_shading
- separate_shader_objects
- Увеличить требуемые размеры для текстуры/рендеринга буферов
- 64-битные атрибуты вершин
- get_program_binary
- +2 Тесселяционные шейдеры
Вы можете получить все изменения здесь.
Приложения G-K переходят ко всем изменениям с OpenGL 3.1 в OpenGL 4.1, включая новые функции, устаревшие, полностью удаленные и т.д.
Кроме того, эта ссылка может быть "легче читать":)
Если ваш вопрос: "Как рабочий процесс может быть лучше в 4.1", это просто не то, о чем идет речь 4.1.
Во-первых, быстрое определение, чтобы убедиться, что мы говорим об одном и том же. Для меня "рабочий процесс" означает усовершенствования API и улучшения производительности. Это не позволяет аппаратным средствам делать что-либо, чего вы не могли раньше; они просто упрощают работу программиста или позволяют вам быстрее работать.
Подавляющее большинство усовершенствований API, которые не основаны на новых функциях, доступны для 3,3 реализации в качестве основных расширений. Поскольку они являются основными расширениями, вам даже не нужно менять код, чтобы удалить суффикс "ARB" из вашего кода 3.3, чтобы использовать их в коде 4.1. Все это просто работает. В частности, я говорю о разделении программ (GL_ARB_separate_program_objects) и извлечении двоичных файлов скомпилированных программ (GL_ARB_get_program_binary). Оба поддерживаются на 3,3 аппаратных средствах; NVIDIA даже расширяет их вплоть до чипов GeForce 6xxx.
Основное исключение - это подпрограммы шейдеров, которые ограничены аппаратным обеспечением 4.x. Тем не менее, эта спецификация настолько плохо указана, что я не уверен, что кто-то даже может ее использовать, не говоря уже о необходимости. Это запутанно и несколько запутанно.
Существует мало того, что можно легко использовать для повышения производительности, уникальной для 4.1. Безупречный рендеринг (GL_NV_vertex_buffer_unified_memory), вероятно, является самым большим улучшением производительности, если это является узким местом для вас. Как вы, вероятно, заметили от имени, это расширение NVIDIA, а не ядро. Я уверен, что ARB работает над чем-то, совсем не похожим на это, на основную функцию в будущей спецификации. И Bindless не уникален для аппаратного обеспечения 4.x; Опять же, NVIDIA расширяет это вплоть до чипов GeForce 6xxx.
В 4.x есть некоторые вещи, которые могут улучшить аппаратное обеспечение, но все они в конечном счете вращаются вокруг какой-то формы работы GPGPU. Косвенный рендеринг (GL_ARB_draw_indirect) будет хорошим ускорением, если вы создаете данные рендеринга из OpenCL. Цивилизация V уже показала ценность использования технологий GPGPU (они используют DXCompute, но вы можете сделать это и с OpenCL) для декомпрессии текстур; это очень помогает в производительности загрузки, так как вам не нужно загружать столько данных с диска.
Если вы хотите действительно расширить определение улучшения производительности, Tessellation можно считать повышением производительности. Вы можете использовать его для отправки меньших сеток или использовать нижние мешочки LOD ближе к камере. Или вы могли бы считать это способом рендеринга более высоких полигональных сеток, чем раньше.
4.x действительно не касается предоставления аппаратных функций, которые ускоряют работу. Это больше о возможности визуализации по-разному, чем вы могли раньше.
И еще одно: нет выбора между 3.1 и 3.3. Практически любое аппаратное обеспечение, которое может запускать 3.1, может работать 3.3. Если это не так, то это из-за того, что производитель аппаратного обеспечения отказывается от своих драйверов OpenGL (я смотрю на вас, Intel).