【发布时间】:2016-07-29 11:57:07
【问题描述】:
我有一个统一的 texture2d,我想根据每个像素的色调值生成一个颜色直方图。我尝试过使用 getPixels,但对于 1920x1080 的纹理来说速度非常慢。
if (tex == null)
{
return null;
}
tex = GetComponent<GUITexture>().texture as Texture2D;
Color32[] texColors = tex.GetPixels32();
int total = texColors.Length;
int[] Harray = new int[360];
for (int i = 0; i < total; i++)
{
float H;
float S;
float V;
Color.RGBToHSV(new Color(texColors[i].r, texColors[i].g, texColors[i].b),out H,out S,out V);
Harray[(int)H]++;
}
for (int i = 0; i < 360; i++)
{
PlotManager.Instance.PlotAdd("Hue", Harray[i]);
}
我认为着色器可能会提供帮助,但我没有着色器编程经验。着色器能否填充色调发生数组并返回它,同时保持良好的帧速率?
【问题讨论】:
-
真的,Unity 不是为这样模糊的东西而构建的。这不是它的用途。你不妨开始尝试在原生 iOS 中制作骨骼动画,你知道吗?我建议您从资产商店获取 NatCam,并联系该软件包的制造商以了解满足此需求的本机插件。
-
@JoeBlow 你在 NatCam 工作吗?还是只是一个大粉丝?我看到的所有 StackOverflow 帖子都有你推荐它 - 考虑购买它并努力寻找第二个意见;)
-
嘿@EvanKnowles!显然我不为 NatCam 工作。终于有人发布了一个合适的相机包是一个奇迹,因为 Unity 基本上还没有相机软件。它是“每个人都使用它”的一个例子——就像 AntiCheatToolKit 或 Vectrosity 一样。实现它需要 6-12 个人月的工作量。