Как XOR цвета под форму? (SDL2)

У меня есть вычурный побочный проект, который работает медленнее, чем я хочу. По сути, я хочу нарисовать кучу форм и цветов, чтобы они XOR формы и цвета, которые я уже нарисовал. Программа делает такие вещи:

Это семь черных кругов, XORed на экране.

Мой метод довольно медленный, для каждого пикселя я зацикливаюсь на каждом круге, чтобы определить, должен ли он быть XORed.

Я могу рисовать круги с помощью SDL_gfx, но я не могу найти режим рисования с XOR. Мой текущий мыслительный процесс состоит в том, чтобы использовать режим смешивания, который по крайней мере скажет мне, является ли определенный пиксель нечетным или четным. Тем не менее, создание SDL_Texture, которое может быть отображено в ( SDL_TEXTUREACCESS_TARGET), делает невозможным непосредственное управление им ( SDL_TEXTUREACCESS_STREAMING).

Простой вопрос заключается в том, как применить черный круг, чтобы он XOR пикселей под ним?

1 ответ

Я не думаю, что есть способ сделать это с SDL_Renderer и все еще иметь разумную производительность. Вам нужно будет выполнить работу в SDL_Surface и загрузить его снова.

Я написал SDL_gpu, чтобы включить современные графические эффекты в стиле, аналогичном встроенному в SDL API рендеринга. Этот конкретный эффект тривиален в GLSL, если вы его много используете. Если вы хотите избежать пользовательских шейдеров, этот эффект, вероятно, возможен с расширенными опциями режима наложения, которые есть в SDL_gpu.

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