В чем разница между GLSL и c? - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть три вопроса:

  1. Реализуется ли API Qt / 3D с помощью кода GLSL?
  2. Скомпилирован ли код GLSL и скомпонован ли он как обычный код c / c ++, и может лион работает на CPU (не на GPU)?
  3. Почему GLSL лучше рендерится, чем обычный c / c ++?

Ответы [ 2 ]

12 голосов
/ 29 декабря 2011

У вас, кажется, есть фундаментальное неправильное понимание того, что такое 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 ++ в графический процессор, вы бы этого не хотели. Не для шейдеров.

4 голосов
/ 29 декабря 2011

Реализуется ли API Qt / 3D с помощью кода GLSL?

Не совсем.Он может использовать некоторые изнутри, но это все скрыто от пользователя.Сам API является C ++.OpenGL API находится в C, хотя он (драйверы) использует сборку внутри.

Скомпилирован ли код GLSL и скомпонован как обычный код c / c ++

Нет, конечноне.Он скомпилирован драйвером видеокарты и работает на GPU.Это довольно ограниченный язык, и его мало используют, кроме шейдеров.

Почему GLSL является более приятным в рисовании, чем обычный c / c ++?

Он содержит функции, которые GPUхорош, хотя и лишен черт, но плох.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...