Я хочу визуализировать том (VERSION combined with programmable pipeline and fixed pipeline)
, используя только программируемый конвейер (без фиксированного конвейера), который использует glsl. Чтобы достичь этого, мне нужен многопроцессор рендеринга, который означает визуализацию другой сцены с разными шейдерами в последовательном порядке. Есть three methods
приходят на ум:обрабатывать несколько проходов при рендеринге
- с помощью программы один шейдер и отсоединить шейдер -> присоединять шейдер -> Программа перекомпиляции всякий раз, когда рендеринг новой сцены.
- с использованием одной программы шейдера за проход, а затем выходит несколько программ шейдера.
- Использование подпрограмм в glsl для выбора различных подпрограмм при рендеринге другого прохода.
Интересно, когда следует использовать 1-й метод? 2ed метод? может ли любой опытный разработчик помочь?
Я искал убер-шейдеры. но кажется, что в шейдерных файлах uber-shaders используют что-то вроде макросов '# ifdef' и' # endif'. Как я могу выбрать различные фрагменты шейдерных файлов в файлах шейдеров во время выполнения с помощью '# ifdef' и' # endif'? могу ли я установить макрос определения в моей программе OpenGL в функции «render()»? – toolchainX
Нет, препроцессора нет, чтобы сделать что-то подобное. Вы должны использовать инструменты/библиотеки, такие как [Boost :: Wave] (http://www.boost.org/doc/libs/1_49_0/libs/wave/index.html), чтобы предварительно обработать код. После этого вы можете скомпилировать/выполнить шейдер. – pearcoding
Но, возможно, это поможет вам: [externally-define-preprocessor-macros-in-glsl] (http://stackoverflow.com/questions/2378448/externally-define-preprocessor-macros-in-glsl) – pearcoding