我有一个艺术性的侧面项目,运行速度比我想要的慢。基本上,我想绘制一堆形状和颜色,以便它们对我已经绘制的形状和颜色进行异或。该程序的内容如下:
七个黑色圆圈在屏幕上异或。
我的方法非常慢,对于每个像素,我循环遍历每个圆圈以确定它是否应该被异或。
我可以用SDL_gfx绘制圆圈,但我似乎无法找到XOR的绘图模式。我目前的思维过程是使用混合模式,至少会告诉我特定像素是奇数还是偶数。但是,创建可以呈现为(SDL_TEXTUREACCESS_TARGET)的SDL_Texture使其无法直接操作(SDL_TEXTUREACCESS_STREAMING)。
简单的问题是,如何应用黑色圆圈,使其与其下方的像素进行异或运算?
答案 0 :(得分:1)
我认为没有办法用SDL_Renderer执行此操作并且仍然具有合理的性能。您必须在SDL_Surface中完成工作并再次上传。
我编写了SDL_gpu来启用现代图形效果,其风格与SDL的内置渲染API类似。如果您使用它很多,这种特殊效果在GLSL中是微不足道的。如果要避免使用自定义着色器,则可能使用SDL_gpu具有的扩展混合模式选项可以实现此效果。