2010-09-05 4 views
1

Я заметил, что старый код имеет GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR и т. Д. Входы с glMaterialfv. Как они заменяются в современном коде GLSL?Современные цвета OpenGL

например. Предполагая, что импортирующие модели библиотеки (Assimp) дают прямые значения таким категориям цветов, могут ли они по-прежнему использоваться напрямую (в основном контексте)?

ответ

2

Да, по крайней мере, (хотя, конечно, в современном коде вы обрабатываете большую часть этих вычислений в шейдерах).

Одна из типичных возможностей заключается в использовании uniform s для вашего окружающего цвета (цветов), положения света, положения глаз и т. Д. Затем настройте пару varying s, которые будут использоваться для рассеивания цветного и зеркального цвет от вашего вершинного шейдера до вашего фрагментарного шейдера. Ваш вершинный шейдер вычисляет значения для этих varying с на входы uniform.

Фрагментный шейдер затем получает (например) текстуру и varying s, упомянутые выше, и объединяет их вместе (вместе с любыми другими входами, которые могут потребоваться) для получения окончательного цвета для фрагмента (который он присваивает gl_FragColor).

+1

В последнее время изменение устарело. –

+1

@Lela Dax: true, но это не изменяет действительности метода. Это тривиально изменить меняющуюся пару в/из. – Bahbar

+0

Возможно, обновите ответ с помощью ввода/вывода или, по крайней мере, упомяните, что они вытеснили единую/изменяющуюся? – AzP

Смежные вопросы