如何在 XNA 中绘制带纹理的球体

How to draw a textured sphere in XNA

我想要一个关于如何在现代 XNA(根据 MonoGame)中绘制带有纹理(例如方格)的球体的示例。一切都应该以编程方式发生(生成模型和纹理,而不是从文件加载)。简短易懂者优先。

最终结果看起来像

除了阴影和我不关心纹理如何向边缘变形的事实。

表明之前的研究:我试过 SpherePrimitive but could never put texture on it. If you can, consider it is already present. I have also tried this example from the web,它没有再次编译 MonoGame,当它编译时最终结果看起来不像一个球体。

一些背景信息:我正在使用 XNA,因为它看起来是在 C# 中进行 3D 处理的唯一跨平台方式,但我正在做一个简单的可视化,所以到目前为止我只需要球体。

事实证明,XNA/MonoGame 尤其不适合这项任务。出乎我的意料,它不是 3D 游戏生成器,而是 3D 游戏引擎 生成器。提供的 API 级别太低,无法一次性解决所描述的任务。

我已经尝试过 Unity 3D 但它使开发以 Unity 为中心,考虑到我已经选择了代码库和工具,这很麻烦。

我目前正在准备使用 OpenTK 来完成这项工作。它仍然相当低级,但是:

  • 这是一个简洁的解决方案。需要时创建 window,完成后丢弃。作为一个库,它不强制特定的心态、工具或入口点。
  • 它基本上是 OpenGL,为此已经编写了大量代码并可供审查。
  • 这是一个小而稳定的依赖。较少的间接层数。
  • 我已经找到一个working textured sphere-drawing example