Я заинтересовался изучением графического программирования, так что очевидно, точка входа должна была узнать OpenGL. Но собрать рассеянную информацию вокруг форумов и сайтов, кажется, что чистая реализация OpenGL исчезает из, так как большинство вещей, предварительно 3,0 в настоящее время устарели и со ссылкой на обзор на Амазонке «так как 3,0 это все о шейдерах». Кроме книг, которые я видел, выглядит как только superbible охватывает более новую версию, но только частично, потому что значительная часть книги учит устаревшие функции, и есть книги специально для GLSL.
Здесь я столкнулся с моей первой проблемой, некоторые аппаратные средства не поддерживают GLSL, в том числе ноутбука с интегрированной графикой Intel, что я планировал использовать. Функция
GLuint vertShader = glCreateShader(GL_VERTEX_SHADER);
вызывает ошибку сегментации и от взглядов его мой водитель не поддерживает шейдеры
Так что мой вопрос, что жизнеспособность сделать игру только в OpenGL? я буду отсутствовать незаменимые функции хорошего от языка шейдеров? И какие аппаратные средства (старые поколения i3, i5, i7, старые УПУ) можно ожидать, чтобы запустить игру с шейдерами должным образом?
Ответы:
Код шейдера определенно яснее и проще для понимания, чем путаница вызовов glTexEnv, glTexGen и текстурной матрицы, и имеет преимущество, заключающееся в том, что вы можете выражать любую более или менее произвольную математическую операцию, используя ее (которую вы не можете сделать с фиксированной трубопровод - что ты называешь «чистый OpenGL»). Единственный потенциальный недостаток в том, что вы должны написать определенное количество вспомогательной инфраструктуры в вашем коде, прежде чем вы можете начать использовать их, в то время как со старым способом вы можете в значительной степени погружения прямо. Я называю это «потенциальный» недостаток, потому что я на самом деле думает, что это делает вас подготовить вещи и узнать немного больше заранее - OpenGL имеет репутацию «просто» и иногда видят люди дурачат этим и дайвинг прямо в самом деле не зная, что они делают первый,
Аппаратно вы можете рассчитывать на почти все выпущенные в последние 5/6/7 лет , чтобы иметь некоторую степень поддержки шейдеров, но - в случае старых Intels (некоторые из серии 9xx) - это не будет GLSL, но вместо этого будут более старые расширения GL_ARB_vertex_program и GL_ARB_fragment_program . В них используется язык шейдеров, похожий на ассемблер, но - время исповеди - мне лично это очень нравится. На самом деле его довольно легко использовать, если ему не хватает некоторых более современных функций (таких как ветвление) и требуется больше строк кода шейдера, чтобы сделать то же самое. Поддержка инфраструктуры , необходимая в основной программе для этих расширений является гораздо более легким , чем GLSL тоже.
Это не означает, что я рекомендовал бы их на GLSL однако, но они являются вариантом, что есть, если вам действительно нужно работать на этом классе оборудования, и это полезно иметь в виду, что они существуют, что приводит меня к конечной точке , Вы действительно уверены, что вам действительно нужно работать на этом классе аппаратных средств (например, в случае вашего ноутбука вы можете просто пренебречь, чтобы получить точки входа)?
источник
Также следует отметить, что «чистого OpenGL» больше нет.
OpenGL ES 2.0 угробил все без шейдера вещи, а с WebGL основан на него, он тоже работает только с шейдерами. OpenGL 3.0 осуждается все фиксированная функция вещи, и 3,1 удалить его (в основных профилях. Большинство реализаций поддерживают профили совместимости, но MacOSX не для их 3.2 реализации).
Поэтому я не хотел бы предложить обучение не-шейдеров OpenGL.
источник
Если вы сделали какие-либо программирования в прошлом, писать свой собственный код шейдера с использованием GLSL будет намного более приятным. Первоначально я пытался обучения фиксированной функции OpenGL, и это было трудно для меня, потому что это не имеет смысла. Тогда я попытался узнать GLSL, используя оранжевую книгу, и это было намного проще и сделать более с тех пор. Просто мои 2 цента.
Я бы определенно идти к GLSL из-за силы, чтобы писать программы для GPU.
источник