2016-09-20 62 views
0

我有一个艺术性的侧面项目,比我想要的要慢。基本上,我想绘制一些形状和颜色,以便XOR我已绘制的形状和颜色。该程序使这样的事情:enter image description here如何XOR形状下的颜色? (SDL2)

这是七个黑色圆圈XORed到屏幕上。

我的方法很慢,对于每个像素,我循环遍历每个圆圈以确定它是否应该异或。

我可以用SDL_gfx绘制圆,但我似乎无法找到XORs的绘图模式。我目前的思考过程是使用混合模式,至少会告诉我某个特定像素是奇数还是偶数。但是,创建可呈现为(SDL_TEXTUREACCESS_TARGET)的SDL_Texture使其无法直接操作(SDL_TEXTUREACCESS_STREAMING)。

一个简单的问题是,我该如何应用黑色圆圈,使它与下面的像素异或?

回答

1

我不认为有一种方法可以用SDL_Renderer做到这一点,并且仍然具有合理的性能。您将不得不在SDL_Surface中完成这项工作并再次上传。

我写了SDL_gpu以启用与SDL的内置渲染API类似风格的现代图形效果。如果你已经使用过它,这个特殊效果在GLSL中是微不足道的。如果您想避免使用自定义着色器,则可能会使用SDL_gpu具有的扩展混合模式选项来实现此效果。

+0

谢谢。我确实使用glsl找到了一张照片,这看起来很简单,我只需要稍微磨练一下我的技能。将考虑SDL_gpu。 – Carl