【问题标题】:copying a texture in xna into another texture将 xna 中的纹理复制到另一个纹理中
【发布时间】:2009-12-01 03:55:32
【问题描述】:

我正在加载一个包含多个精灵纹理的 Texture2D。当我加载初始纹理以存储到单独的 Texture2D 对象中时,我想拉出单个纹理,但似乎找不到任何可以让我这样做的方法。 SpriteBatch.Draw 我认为应该只在开始、结束块中调用,对吧?

谢谢。

【问题讨论】:

  • 你对最后一部分是正确的。 Draw 必须在 begin 和 end 之间调用。

标签: xna


【解决方案1】:

我正在加载一个 Texture2D,其中包含 多个精灵纹理。我想 拉出单个纹理 当我将初始纹理加载到 存储到单独的 Texture2D 对象中。

您不必这样做,也不应该这样做。访问单个纹理比访问多个纹理更快。此外,纹理存储在 GPU 纹理内存中。把它分开是没有意义的。

您应该专注于编写可以访问精灵表中各个精灵的代码。我建议你看看基于精灵的游戏是如何工作的。

这是一个很棒的教程视频系列,应该可以帮助你:tile engine videos

【讨论】:

  • 我遇到了同样的信息。我已经重构了我的代码以使用源矩形而不是每个 Sprite 都存储一个 Texture2D。
  • Sprite sheet 在某些显卡上的 XNA 中表现得很奇怪——即使您使用正确的源矩形,如果您正在对拉伸的矩形进行 blitting,您的 sprite 中的周围像素可能会影响得到的内容渲染——如果你将工作表中的每个图块复制到它自己的纹理中,这个问题就会完全消失。
猜你喜欢
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多