Запуск шейдеров на GPU

У меня есть программа OpenGL, использующая шейдеры (OpenGL версии 3.3, GLSL версии 1.5). Я слышал, что шейдеры на самом деле работают на процессоре, если только вы специально не укажете, чтобы он работал на графическом процессоре. (Конечно, вся причина, по которой я использую шейдеры, заключается в том, чтобы ускорить рендеринг, выполняя вычисления в графическом процессоре, а не в центральном, так что это не то поведение, которое мне нужно.) Это правда? Если да, то как заставить шейдер работать на GPU?


person Alex319    schedule 18.11.2010    source источник


Ответы (2)


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

person Jerry Coffin    schedule 18.11.2010
comment
+1 В качестве примечания, хотя некоторые функции даже на современных картах заставят OpenGL оценивать шейдер в программном режиме, что приводит к довольно ужасной производительности (GL_LINE_SMOOTH - классический пример). - person Ron Warholic; 18.11.2010
comment
Стек OpenGL Mac OS X может откатиться к ЦП (если что-то пойдет не так). - person Stringer; 18.11.2010
comment
Поддерживает ли OSX даже 3.3? - person genpfault; 19.11.2010
comment
@genpfault см. Как обновить OpenGL с 2.1 до 3.3 в Mac OSX? - person Ruslan; 14.04.2019

Я почти уверен, что драйвер всегда пытается запустить каждый шейдер на графическом процессоре, а не на процессоре. Но не все современные видеокарты поддерживают полный набор функций шейдерных операций. Например, расширение OpenGL 4.0 GL_ARB_gpu_shader_fp64, как я знаю, может быть доступно в частичной поддержке. Поэтому драйвер должен эмулировать некоторые операции в программном режиме на процессоре. Что касается расширений, вы можете проверить свою карту, вызвав glGetString с Параметр GL_EXTENSIONS.

person Edward83    schedule 20.11.2010