C# 为游戏推荐雪碧尺寸(XNA)?

C# 为游戏推荐雪碧尺寸(XNA)?,c#,xna,C#,Xna,2D sprite表中单个瓷砖的最佳尺寸是多少? 我正在创建一个精灵表,并试图找出每个精灵的最佳分辨率。有没有一个标准尺寸我不应该超过或低于 例如64px X 64px、512px X 512px等 我试图得到高清质量的精灵。想想外星原始人,城堡破坏者,或是黏液世界。有些示例也不错,因此如果您有精灵表示例,请上传它们。这取决于精灵的渲染方式,以及渲染时您将如何处理它们 如果要避免缩放精灵,则尽可能使其与最终渲染分辨率相同将有助于保持较高的质量。我肯定会坚持两种纹理大小的力量,因为它似乎确实在总体

2D sprite表中单个瓷砖的最佳尺寸是多少?

我正在创建一个精灵表,并试图找出每个精灵的最佳分辨率。有没有一个标准尺寸我不应该超过或低于

例如64px X 64px、512px X 512px等


我试图得到高清质量的精灵。想想外星原始人,城堡破坏者,或是黏液世界。有些示例也不错,因此如果您有精灵表示例,请上传它们。

这取决于精灵的渲染方式,以及渲染时您将如何处理它们

如果要避免缩放精灵,则尽可能使其与最终渲染分辨率相同将有助于保持较高的质量。我肯定会坚持两种纹理大小的力量,因为它似乎确实在总体上有所帮助

但是,如果要在精灵上进行大量变换,尤其是旋转或缩放,则可能需要比它们渲染的分辨率稍大一些,因为重采样的质量可能稍高一些。您将要考虑在任何时候合成和显示多少精灵,以及您将运行什么硬件(Xbox,PC,两者),以确定平衡性能与纹理质量的最佳选择。


不过,如果您对精灵的数量不太感兴趣,您可以选择更高的质量,并允许系统根据需要缩小精灵的尺寸,从而获得良好的效果。

这可能无法直接回答您的问题,但我想介绍一下我在使用精灵表时学到的知识。Sprite表非常棒,因为当绘制到屏幕上时,GPU必须切换的纹理越少,性能就越好

如果你还没有看的话,我建议你看一下。它提供了两大好处:

  • 它会自动将精灵(在不同的文件中)打包成一个大纹理。我认为将我的作品保存在单独的文件中,并自动生成一张巨大的精灵表,比将我所有的作品保存在一个文件中要好

    例如,如果我决定让我的动画在中间有一个额外的帧呢?然后我必须在雪碧纸上的一堆东西周围移动,为新的框架腾出空间。如果我每帧使用一个文件,它只是对XML文件的一行更改,如果要在中间添加一个新的帧,则列出了进入SpRITE表的内容。 单独列出每个帧文件可能会很痛苦,因此我可以理解为什么这对某些人不起作用,但对我的项目来说很好。此外,我发现能够轻松地在我的精灵表中交换纹理是非常值得的,这将帮助您确定要使用的精灵的大小

  • 我们在缩放精灵时遇到了一个问题。我相信link很好地描述了这个问题。在任何情况下,此精灵表示例将自动在添加到精灵表的每个精灵周围添加一个1像素边框(使用最初位于边缘的像素的颜色),这将保护您在缩放时不会看到精灵周围颜色奇怪的边框,因为它仍然仅使用原始大小绘制精灵。它只是使用额外的边界进行插值,而不是附近精灵的像素或空白

里德是正确的,实际上没有任何标准的精灵大小,你应该使用。这主要取决于你在做什么类型的游戏,你在做什么类型的缩放和旋转,等等。然而,在使用精灵床单时,你需要注意一些特定的尺寸。雪碧片只是一个巨大的纹理,但GPU在它们的内存中所能容纳的纹理大小是有限的。XBOX360支持多达4096x4096(我认为)纹理。如果您正在为Windows编程,则这取决于用户的图形卡。据我所见,最好在Windows上使用2048x2048,因为大多数图形卡至少可以支持这么多


sprite表示例中的最后一个注释。我不相信它会观察最大的精灵表大小,所以如果你真的使用它,你可能想添加几行来捕捉生成纹理的大小大于你想要支持的大小。

肖恩·哈格里夫斯最近发表了一系列关于纹理重采样和别名的博客文章。请参见的帖子列表顶部和的帖子。这里的关键词是“Nyquist频率””()

特别是看看。它有这样漂亮的图表:

非常非常简短的答案是:

避免渲染比源纹理小2倍以上的纹理(即:源大小的50%或更小)。如果确实需要渲染较小的图像,请使用mipmaps。如果你在旋转,你向下缩放的空间会更小。避免向上缩放

在XNA中使用两种大小的纹理没有任何优势。只需使用目标分辨率的纹理,让XNA在引擎盖下处理即可


举个例子:如果你制作的游戏分辨率为1080p,那么缩小到720p就是缩小到66.66%,这是完全可以接受的。

那么你是说纹理大小没有标准?不,这取决于使用情况和需要。理想的精灵纹理大小取决于渲染它们的方式(以及大小)。好的,我理解。所以没有“合适”的尺寸?我只需要四处玩耍,挑选适合我的。是的:)这是乐趣的一部分。“正确”是一种平衡——更高的分辨率==以牺牲资源为代价在质量上更具灵活性,因此它始终是一种平衡,每个应用程序都是独一无二的。谢谢,我已经看过了这个示例,可能会走这条路。2048 x 2048听起来真的很高,你有没有一个精灵表的例子可以这样