Как 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.