有没有一种方法可以在 SFML 中创建等 ionic 效果,而不会降低我的帧率?
最佳答案
1) 直接在内存中将图像位作为字节(或 int/任何取决于您的目标颜色深度)数组进行操作。不要每次都使用图像中的任何 GetsPixel()。
2) 尽量减少你的数学。对于等 ionic 效果,您通常会使用很多触发函数,当您每秒执行一次(高度宽度帧速率)时,这些函数相当慢。要么使用快速的专用数学库进行计算,要么更好的是,在开始时缓存计算并在效果期间使用查找表以完全从每个帧中删除数学。
3) 使老式等 ionic 效果运行如此之快的原因之一是调色板循环。我不知道有什么方法可以直接用 SFML 复制这个(或一般的调色板),但你可以使用 GLSL 着色器来获得相同类型的结果,而不会对性能造成很大影响。像这样:
float4 PS_ColorShift(float2 Tex : TEXCOORD0) : COLOR0
{
float4 color = tex2D(colorMap, Tex);
color.r = color.r+sin(colorshift_timer+0.01f);
color.g = color.g+sin(colorshift_timer+0.02f);
color.b = color.b+sin(colorshift_timer+0.03f);
color.a = 1.0f;
saturate(color);
return color;
}
关于c++ - SFML 等 ionic Sprite 效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2844623/