|
|
1
2
好的,根据你的代码( here ,这与ColorMatrix不太一样(但这应该会让您更好地了解如何根据需要添加完整的矩阵功能),下面是一个可以在XNA上工作的版本: 首先,下载 Sprite Effects sample . 这可以帮我省去安装程序的麻烦。我只是要取代去饱和效应。 这是一个像素着色器,几乎是一样的,你自己。将“desaturate.fx”的内容替换为:
现在替换
(正如乔尔·马丁内斯提到的, XNA 4 this code becomes much neater )
现在有一个 专业 此代码的限制条件-不能批处理具有不同ColorMultiply和ColorAdd值的精灵!(实际上ColorMultiply有点多余,因为您可以将精灵颜色用作ColorMultiply,您可以为每个精灵更改颜色。) 因此,如果每个精灵有不同的加/乘值,则必须对每个精灵执行整个spritebatch.begin,effect.begin,draw stuff,spritebatch.end,effect.end操作。 原因是像素着色器及其参数只能在每个批中设置一次 as explained in this blog post . 如果你有很多雪碧,每批做一个雪碧会很慢! 解决这个问题的方法(如果您需要这种性能)是制作一个自定义的sprite批处理程序,使用一个自定义的顶点着色器可以将多个颜色传递给像素着色器。这是可能的,虽然不是小事。一个好的起点是 source code for the shaders used by SpriteBatch . |
|
|
2
1
您可以使用自定义像素明暗器来进行这种颜色操作非常容易。例如,采用如下像素着色器:
在spritebatch类中使用自定义着色器
这么多
在XNA 4.0中更容易:
|
|
|
3
1
以下是一个适用于Silverlight和WPF的解决方案:
我会给第一个人的答案,调整它对XNA的工作。 |
|
|
Ruslan · 如何在单游戏中使用或制作“效果”? 8 年前 |
|
|
MyNameIsGuzse · 找不到C#静态类 8 年前 |
|
|
John Tran · 有人能告诉我为什么这样不行吗?C#XNA 9 年前 |
|
|
PÅemysl Novák · 单博弈-等距图块,大地图上的低FPS 9 年前 |
|
|
TS1997 · 带有winforms的单游戏 10 年前 |
|
|
Joe Smith · 旋转固定在精灵上的Vector2 10 年前 |
|
|
jacksparrow · C#XNA-遍历项目并绘制它们 10 年前 |
|
|
user2056166 · 在xna上绘制圆段 11 年前 |