代码之家  ›  专栏  ›  技术社区  ›  Andreas Brinck

如何在运行时在XNA中加载纹理?

  •  8
  • Andreas Brinck  · 技术社区  · 14 年前

    我正在开发一个使用XNA框架进行3D渲染的应用程序。我现在想从文件中加载纹理。到目前为止,我发现了两种方法:

    1. Texture2D.FromStream(GraphicsDevice, Stream) 这种方法的问题在于它只加载GIF、PNG和JPG,我还需要对TGA图像的支持。
    2. 创建一个 ContentManager 对象。这种方法的问题在于,似乎所有纹理都需要从文档中静态添加到项目中:“在ContentManager可以加载资产之前,您需要将资产添加到游戏项目中”。所讨论的程序是一个级别编辑器,而所需的纹理并不是事先知道的。

    有没有其他简单的方法来加载纹理,我正在考虑使用其他类来加载图像(虽然我不知道是哪个,但我不太熟悉c),然后使用 Texture2D.SetData 方法?

    有没有其他简单的方法来实现我正在努力实现的目标?

    2 回复  |  直到 12 年前
        1
  •  3
  •   Nipuna    12 年前

    有几种方法可以实现您想要的目标:

    1. 您可以从调用内容管道 在内部 您的编辑器,动态创建内容项目。如何做到这一点在 WinForms Series 2 Sample . 这可能是最好的方式,因为它允许您继续使用内容管道。

    2. 如你所说,你可以自己解码TGA文件并使用 SetData . Google上的c_tga阅读器有很多结果。 This is the first one .

        2
  •  2
  •   Gavin Gassmann    12 年前

    我已经用过 Texture2D.FromFile(device, path) 以前,它工作得很好。不过,偶尔我会遇到一些问题,还必须详细说明 TextureCreationParameters 把它们传进来。请记住,您需要手动处理加载的纹理2d。