glStencilOp — GL_INCR_WRAP GL_DECR_WRAP. поведение трафаретной маски

#opengl

#opengl

Вопрос:

В документации OpenGL для glStencilOp неясно, что происходит для операций увеличения и уменьшения при наличии трафаретных масок. Похоже, это подразумевает, что маска будет игнорироваться для операций увеличения и уменьшения.

Кто-нибудь может это подтвердить / опровергнуть?

Спасибо

Ответ №1:

Маска не будет проигнорирована. Вместо этого операция увеличения или уменьшения выполняется так, как если бы маски не было, но единственные биты в буфере трафарета, которым будет присвоено увеличенное значение, разрешены маской.

Комментарии:

1. итак, если некоторые старшие биты замаскированы, то ни одна из операций «переноса» никогда не будет действительно выполнена…

2. Или, если посмотреть на это с другой стороны, они завершатся раньше. Если вы рассматриваете гипотетический 8-разрядный трафарет с маской на старших 4 битах и используете GL_INCR_WRAP , значение 15 ( 00001111 ) будет увеличено до 16 ( 00010000 ) и сразу же будет замаскировано до нуля, что ускорит перенос.