Мне сердечно не нравятся отрицательные ответы, но я боюсь, что я должен дать один на этот вопрос.
Вы в конечном счете просите материал для начинающих, который использует функции уникальный для OpenGL версии 4.0 и выше. Ну, давайте посмотрим на некоторые из уникальных особенностей 4.x.
Возможно, самой большой особенностью является тесселяция. Что это значит? Это означает тесселлирующие примитивы, чтобы генерировать больше примитивов. Прежде чем можно даже понять, что это значит, нужно сначала понять, как примитивы получаются вообще. Это использует функции уровня до 4.x.
Но даже с четким пониманием того, как работает рендеринг, все еще существует проблема. Чтобы иметь какое-либо осмысленное обсуждение тесселяционных шейдеров, нужно сначала иметь сильное понимание алгоритмов тосселяции . И это не простой вопрос. Чтобы учебник научил пользователя использовать тесселяционные шейдеры, вначале учебник должен ввести кривые сплайнов, патчи или поверхности разбиения. И те, и другие - это длинные темы, посвященные им. Только после подробного описания алгоритмов пользователь будет готов увидеть, как эти алгоритмы реализованы в тесселяционном шейдере.
Или, другими словами, тесселяционные шейдеры не являются материалом для начинающих. Я бы даже не квалифицировал их как материал промежуточного уровня.
Другой большой особенностью аппаратного обеспечения 4.x является shader image load store (и его компаньон, atomic counters), ядро в 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 есть хорошая коллекция таких ссылок. В интересах полного раскрытия я написал один из них.
У меня есть вопрос. Как вы знаете, как новичок, что статьи NeHe устарели? Кто тебе это сказал ? – Calvin1602
@ Статьи Калвина Нехе не «устарели», но они полны плохих практик, и они очень древние, используя отвратительные практики и/или библиотеки, которые давно умерли. –
@Matias: Я знаю (даже если я думаю, что они устарели), но большинство новичков все равно используют его, потому что это самая видимая страница в Интернете. Мне было любопытно, как OP знал, что это уже не так хорошо. – Calvin1602