#opengl
#opengl
Вопрос:
В документации OpenGL для glStencilOp неясно, что происходит для операций увеличения и уменьшения при наличии трафаретных масок. Похоже, это подразумевает, что маска будет игнорироваться для операций увеличения и уменьшения.
Кто-нибудь может это подтвердить / опровергнуть?
Спасибо
Ответ №1:
Маска не будет проигнорирована. Вместо этого операция увеличения или уменьшения выполняется так, как если бы маски не было, но единственные биты в буфере трафарета, которым будет присвоено увеличенное значение, разрешены маской.
Комментарии:
1. итак, если некоторые старшие биты замаскированы, то ни одна из операций «переноса» никогда не будет действительно выполнена…
2. Или, если посмотреть на это с другой стороны, они завершатся раньше. Если вы рассматриваете гипотетический 8-разрядный трафарет с маской на старших 4 битах и используете
GL_INCR_WRAP
, значение 15 (00001111
) будет увеличено до 16 (00010000
) и сразу же будет замаскировано до нуля, что ускорит перенос.