2016-09-20 10 views
0

У меня есть побочный проект, который работает медленнее, чем я хочу. В принципе, я хочу нарисовать кучу фигур и цветов, чтобы они имели XOR формы и цвета, которые я уже нарисовал. Программа делает следующее: enter image description hereКак XOR цвета под формой? (SDL2)

Какое из семи черных кругов XORed на экран.

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

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

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

ответ

1

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

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

+0

Спасибо. Я нашел картинку с помощью glsl, которая делает этот вид простым, мне просто нужно немного отполировать мои навыки. Посмотрите в SDL_gpu. – Carl