GLSL - почему побитовые операторы зарезервированы? Какова хорошая альтернатива использования побитовых операций (плавающая точка OPS, которые эмулируют побитовые)

StackOverflow https://stackoverflow.com/questions/3543273

  •  30-09-2019
  •  | 
  •  

Вопрос

Я запускаю некоторые эксперименты в WebGL, один из них является шейдером фрагмента эффекта XOR. По какой-то причине все побитовые операторы зарезервированы в GLSL и вызывают ошибку компилятора при использовании. Почему эти операторы незаконные? Что я могу использовать вместо | в этом случае?

Это было полезно?

Решение

В спецификации GLSL 1.0 они были зарезервированы «для будущего использования», который был 1.3 Spec. Это разрешено беззнаковым и подписанным целым числам, как скалярным и вектором.

Вы должны начать свой шейдер

#version 130

Другие советы

Я тоже столкнулся с этой проблемой, например, пытаясь запустить slissix Игрушка шейдера используя Chrome.

Этот вопрос Имеет два ответа, показывающие способы, которые вы могли бы реализовать побитовые XOR без битовых операторов. Они могут быть медленными, но в некоторых случаях они будут достаточно быстрыми. Лучше чем ничего.

Вы также можете увидеть, является ли + Это достаточно близкое приближение к битирующему XOR, в зависимости от того, что являются вашими требованиями.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top