Подтвердить что ты не робот

Учебные ресурсы OpenGL 4.x

Я знаю, что есть некоторые вопросы об обучении OpenGL. Вот что я знаю:

  • математика для 3D
  • Теория 3D

Вот что я хочу знать:  - OpenGL 4.0 Основной профиль (или последний)  - Шейдерный язык 400 (или последний)  - каждая часть выше (если она не работает между поставщиками, тогда она меня не беспокоит)

Вот что я НЕ хочу знать  - конвейер с фиксированной функцией (никогда не будет использовать его!)  - более старые версии OpenGL  - Профиль совместимости

Я предпочитаю большую часть информации, как учебники, серии статей, книг.

PS Если вы знаете ресурсы на профиле ядра opengl 3.x, отправьте их тоже

4b9b3361

Ответ 1

Мне сердечно не нравятся отрицательные ответы, но я боюсь, что я должен ответить на этот вопрос.

В конечном итоге вы запрашиваете новичок, который использует функции, уникальные для OpenGL версии 4.0 и выше. Хорошо, посмотрим на некоторые из уникальных особенностей 4.x.

Возможно, самая большая особенность - тесселяция. Что это значит? Это означает тесселлирующие примитивы, чтобы генерировать больше примитивов. Прежде чем можно даже понять, что это значит, нужно сначала понять, как примитивы получаются вообще. Это использует функции уровня до 4.x.

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

Или, говоря иначе, тесселяционные шейдеры не являются новичком. Я бы даже не квалифицировал их как материал промежуточного уровня.

Еще одна важная особенность аппаратного обеспечения уровня 4.x - хранилище загрузки шейдерных изображений (и его компаньон, атомные счетчики), ядро ​​в 4.2. Это позволяет использовать некоторые очень интересные вещи, в том числе независимую от заказа прозрачность. Однако для того, чтобы пользователь мог даже понять все причуды вокруг него, пользователь должен быть глубоко знаком с глубокими разработками современного шейдерного оборудования. Поэтому любой учебник должен сначала объяснить, как работает современное оборудование на основе VLIW/SIMD, а также как шейдеры используются с таким оборудованием. Опять же, это не тривиальный материал.

Еще одна важная особенность аппаратного обеспечения 4.x - косвенный рендеринг. То есть, включение параметров в вызов glDraw в самом объекте буфера. Проблема в том, что есть только одна причина использовать эту функциональность: поскольку GPU генерирует данные непосредственно в один или несколько буферов для последующего рендеринга. И это обычно связано с какой-то формой GPGPU-операции, которая не очень важна для новичков.

Все эти функции полезны и имеют реальную цель. Но ни один из них не должен использоваться новичками; в некоторых случаях даже программисты на промежуточном уровне не должны прикасаться к ним.

Теперь, чтобы быть полностью справедливым, есть некоторые 4.2 функции, которые не являются аппаратными (поэтому они часто реализуются в версиях с 3,3 и более) и весьма полезны. Например, отдельные объекты программы. Эти функции ударили, когда я писал мои учебные пособия на основе 3.3, и я подумал о том, чтобы вернуться к ним и включить эту функциональность. Единственная причина, по которой я этого не делал, заключается в том, что реализации (драйверы) по-прежнему не совсем стабильны в отношении этой функциональности. Но было бы полезно сделать.

Основная проблема, с которой я сталкиваюсь, заключается в следующем: если вы находитесь на этапе ваших графических знаний, где вы готовы воспользоваться уникальными функциями аппаратного обеспечения GL 4.x, то у вас также будет достаточно опыта работы с графикой, вам не нужен явный пошаговый учебный материал для реализации функций графического оборудования. Вы были бы тем человеком, который мог бы прочитать спецификацию расширения GL_ARB_tessellation_shader и понять, как заставить их делать то, что вам нужно.

Если вы заинтересованы в материале, который учит OpenGL Core 3.0 или выше, OpenGL Wiki имеет хорошую коллекцию таких ссылок. В интересах полного раскрытия я написал один из них.

Ответ 2

Недавно был выпущен 5-й выпуск OpenGL SuperBible. Это издание отражает OpenGL 3.3, который был выпущен одновременно с OpenGL 4.0, книга охватывает только основной профиль и не принимает предварительных знаний OpenGL.

Что я получил от описания книги в любом случае. У меня есть четвертое издание, и это отличный ресурс для OpenGL 2.0, поэтому я предполагаю, что новая версия вместе с последней версией OpenGL Shading Language будет просто что вы ищете.

Durian Software проводит серию обучающих программ, посвященных современному OpenGL. Они нацелены на OpenGL 2.0, но избегают использования устаревших функций в более поздних версиях.

Ответ 3

В OpenGL 3.0 и 4.1 очень мало различий. Если вы придерживаетесь 3.0 или более позднего основного профиля, вы не можете использовать конвейер фиксированной функции. То, что вы действительно просите, - это учебник OpenGL, который не использует конвейер фиксированной функции.

Jason L. McKesson отличный учебник "Изучение современного 3D-графического программирования" начинается с использования шейдеров для самых ранних основ и никогда не затрагивает конвейер фиксированной функции.

http://www.arcsynthesis.org/gltut/index.html

Я очень рекомендую его.

Ответ 4

Недавно я наткнулся на эту онлайн-книгу: OpenGLBook.com

Я еще не прочитал его, но в описании говорится, что это бесплатный ресурс программирования OpenGL 4.0 в онлайн-формате.

Ответ 5

Отличный вопрос, действительно. На самом деле документация разрежена.

Здесь есть хорошее введение: http://sites.google.com/site/opengltutorialsbyaks/

Вам также может понравиться пакет groovounet ogl4: http://www.g-truc.net/post-0310.html

но я боюсь, что это в значительной степени. Lurk на дискуссионных досках opengl для получения дополнительной информации...

EDIT: нашел несколько секунд назад. Прямо от SIGGRAPH http://nvidia.fullviewmedia.com/siggraph2010/02-dev-barthold-lichtenbelt-mark-kilgard.html

Ответ 7

Я думаю, что одна из лучших надежд у вас есть Joe Blog. В нем есть несколько хороших вводных статей о современном OpenGL, с большим количеством (предположительно) в пути.

Ответ 8

Swiftless обновляет учебники, чтобы включить новый контекст. Хороший стартовый учебник, который был более прямым в отношении быстрого и простого VAO, VBO и рендеринга, находится на swiftless.com

Ответ 10

Основная точка OpenGL 4 - это тесселяция, поэтому я бы рекомендовал начать с самостоятельного учебника по тегеляции OpenGL 4, то есть: http://prideout.net/blog/?p=48

После руководств и руководств хорошее наблюдение должно взглянуть на двигатели с открытым исходным кодом, которые основаны на вершине "нового" OpenGL 3/4. Как один из разработчиков, я бы указал на Linderdaum Engine.