GLSL ES 2.0 - альтернатива для UBO?

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

1 ответ

Решение

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

invariant не имеет никакого отношения к обмену "данными, предоставленными для различных входов". invariant о том, как выход квалифицируется и вычисляется.

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

Другие вопросы по тегам