У вас, кажется, есть фундаментальное неправильное понимание того, что такое GLSL. Это не язык программирования для графики. Это шейдер язык.
В конвейере рендеринга OpenGL существуют определенные этапы рендеринга объекта, предназначенные для реализации программой. Эти этапы называются «этапами шейдера». Шейдер - это программа, написанная на GLSL (по крайней мере, для OpenGL), которая выполняется на одном из этих этапов шейдера.
GLSL используется как часть процесса рендеринга. GLSL определяет , как визуализируются вещи, а не , что визуализируется.
Таким образом:
Реализован ли Qt / 3D API в коде GLSL?
Не так, как вы имеете в виду. Некоторые из конвейера рендеринга для функций рисования могут быть. Но это не так. Это не очень важно для вас, поскольку вы используете его извне.
Скомпилирован ли код GLSL и скомпонован ли он как обычный код c / c ++ и может ли он работать на процессоре (не на графическом процессоре)?
Нет, согласно выше. Шейдеры влияют на рендеринг, а рендеринг происходит на GPU. GLSL является языком затенения для OpenGL, поэтому код GLSL выполняется на GPU.
Почему GLSL лучше при рендеринге, чем обычный c / c ++?
Это не лучше и не хуже; Вы не можете использовать одно для другого. Вы не можете просто выбросить случайный C-код в GPU как часть конвейера рендеринга. И вы не можете скомпилировать GLSL для процессоров.
GLSL - это то, что мы называем специфичным для домена языком . Это язык, предназначенный для достижения конкретной цели. У него есть языковые конструкции, которых у большинства языков просто нет. Он знает, что такое «текстура». Он имеет концепцию значений, которые инвариантны для нескольких исполнений шейдера в рамках одного вызова рендеринга (униформ). У него много других концепций, уникальных для проблемы аппаратных шейдеров и рендеринга.
Мало того, что вы не можете бросить C или C ++ в графический процессор, вы бы этого не хотели. Не для шейдеров.