Создайте альфа-маску (что теперь делает glBlendFunc?)

Я пытаюсь визуализировать квадратную границу (с переменной толщиной, чтобы линии не работали). Я думал, что 4 квадроцикла сделают свое дело (все одного размера, только повернутые и переведенные для каждой стороны). Тогда я подумал, что это должны сделать 2 квадрацикла - нарисуйте один, затем нарисуйте маленький посередине. Однако на самом деле я пытаюсь создать «дыру» в коробке с помощью второй. Думаю, я мог бы применить какую-нибудь функцию смешивания, которая будет делать то, что я хочу.

Я не совсем понимаю, что происходит.

Я понимаю факторы, но не понимаю определения источника и пункта назначения. Будет ли src существующими пикселями в этом месте или пикселями, которые я планирую разместить там? Пункт назначения кажется интуитивно понятным для вызова буфера, поскольку в конечном итоге я планирую разместить пиксели именно там.

Если это так, то, когда я опускаю свой первый ящик, я разрушаю данные пикселей, и как бы я ни пытался смешать, у меня ничего не получится. Это правильно? Это по-прежнему оставляет меня в неведении, что означают параметры (sfactor, dfactor). Что произойдет, если я помещу материал GL_DST в src и в dst? Есть хорошее объяснение того, как они работают? я обнаружил

http://www.opengl.org/sdk/docs/man/xhtml/glBlendEquation.xml

http://www.andersriggelsen.dk/glblendfunc.php

Но нет хороших примеров того, как на самом деле применить эти факторы к пиксельным данным.


person Chemistpp    schedule 26.06.2013    source источник


Ответы (1)


Назначение - это пиксельные данные видеобуфера (фреймбуфера), а источником - пиксельные данные, которые вы хотите смешать.
В тексте говорится:

framebuffer (цвет "назначения")

новый пиксель ("исходный" цвет)

person Community    schedule 26.06.2013
comment
Ага, ладно, я думаю, что невозможно сделать то, что я пытался сделать. Я могу сделать прозрачную коробку или непрозрачную. В любом случае следующий блок не обращает внимания на первый блок и не может отделить его от исходного потока текстуры. Имеет смысл отрендерить 4 квадрата и не беспокоиться о его смешивании. - person Chemistpp; 27.06.2013
comment
@Chemistpp Просто смешайте его по альфа-каналу, и вы получите частичную прозрачность. - person ; 27.06.2013
comment
Ну, это мой вариант по умолчанию, но это более или менее для визуализации границы вокруг уже существующего элемента (панели, меню, поля редактирования, кнопки и т. Д.) - person Chemistpp; 27.06.2013