2013-06-01 3 views
1

Из того, что я читал о ключевом слове invariant для GLSL ES 2.0, это похоже на то, что можно считать синонимом функциональности, предоставляемой однородным буферным объектом, в том смысле, что несколько программ шейдеров могут «делиться» с данные для различных материалов. То, что я хотел бы знать, это то, можно ли это использовать в качестве альтернативы для UBO. Поскольку OpenGL ES 2.0 не поддерживает поддержку UBOs, и если ключевое слово invariant не может выступать в качестве альтернативы, можно ли получить аналогичную функциональность, используя расширения или иначе?GLSL ES 2.0 - Альтернатива для UBO?

ответ

2

invariant не имеет абсолютно никакого отношения к однородным буферам. invariant означает, что если два отдельных шейдера имеют одинаковые входные значения и используют одно и то же выражение для вычисления invariant -qualified выход, то гарантированно будет выдаваться значение с одинаковым значением в обоих шейдерах. Без этого квалификатора такая гарантия не существует.

invariant не имеет отношения к совместному использованию «данных, предоставляемых для различных входов». invariant о том, как выход квалифицирован и рассчитан.

Что касается остальной части вашего вопроса, нет, OpenGL ES 2.0 не имеет ничего общего с UBOs. Вам нужно будет установить разные формы в разных программах на одно и то же значение.

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