有没有办法在SFML中创建等离子效果,但不会减慢我的帧率来抓取?SFML等离子体雪碧效应?
3
A
回答
4
1)将图像位直接作为一个字节(或int /任何取决于目标颜色深度的数组)在内存中操纵数组。每次不要使用图像中的任何GetsPixel()。
2)最小化你的数学。对于等离子效应,您通常会使用很多触发功能,这些功能在您每次执行时都很慢(帧高度为,帧率为)。可以使用快速专用的数学库进行计算,或者更好的是,在开始时缓存计算结果,并在效果期间使用查找表来完全切除每帧的数学运算。
3)让老派等离子效果运行如此之快的一件事是调色板循环。我不知道有什么方法可以直接用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;
}
1
你可以在RAM中制作等离子效果,然后将其放置在纹理上并上传它?这不是一个着色器效果,但它会给你一个等离子效果。
相关问题
- 1. SFML雪碧白色方块
- 2. cocos2d雪碧弹跳效果
- 3. 雪碧
- 4. 将雪碧到最近的雪碧
- 5. 随机雪碧与雪碧池
- 6. Python - 雪碧追逐另一个雪碧
- 7. 存储雪碧套件等级数据
- 8. C++ SFML雪碧没有绘制,但没有发生错误
- 9. SFML在另一个类中绘制一个移动的雪碧
- 10. SFML/C++雪碧在某些点后消失
- 11. 雪碧位置
- 12. 雪碧反射?
- 13. AS3IsoLib雪碧SVG
- 14. 显示雪碧
- 15. 雪碧优化?
- 16. 雪碧背景
- 17. AS3雪碧片
- 18. 雪碧运动
- 19. 雪碧问题
- 20. 在Android中创建等离子效应?
- 21. 图标雪碧变成图标字体
- 22. 雪碧身体不能停止
- 23. 将身体附加到雪碧
- 24. cocos2d:交换雪碧
- 25. CSS雪碧按钮
- 26. CSS雪碧动画
- 27. XNA雪碧转换
- 28. 敌人雪碧XNA
- 29. Android,雪碧动画
- 30. 如何使雪碧