У меня есть программа OpenGL, использующая шейдеры (OpenGL версии 3.3, GLSL версии 1.5). Я слышал, что шейдеры на самом деле работают на процессоре, если только вы специально не укажете, чтобы он работал на графическом процессоре. (Конечно, вся причина, по которой я использую шейдеры, заключается в том, чтобы ускорить рендеринг, выполняя вычисления в графическом процессоре, а не в центральном, так что это не то поведение, которое мне нужно.) Это правда? Если да, то как заставить шейдер работать на GPU?
Запуск шейдеров на GPU
Ответы (2)
Я не уверен, где вы это услышали, но если у вас есть хотя бы приличные драйверы от поставщика графики, ваши шейдеры будут работать на графическом процессоре, и вы ничего не будете делать, кроме их загрузки и использования.
person
Jerry Coffin
schedule
18.11.2010
+1 В качестве примечания, хотя некоторые функции даже на современных картах заставят OpenGL оценивать шейдер в программном режиме, что приводит к довольно ужасной производительности (
GL_LINE_SMOOTH
- классический пример).
- person Ron Warholic; 18.11.2010
Стек OpenGL Mac OS X может откатиться к ЦП (если что-то пойдет не так).
- person Stringer; 18.11.2010
Поддерживает ли OSX даже 3.3?
- person genpfault; 19.11.2010
@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