我正在开发一个数学游戏,其中数字(0-99)用于问题和答案(如标准台球,但它们通常只能达到15)。
所以,我认为以编程方式生成至少数字而不是在3DSMax或类似物中建模99个不同的球是更聪明的。
我在C#/ XNA工作,但也可以在DX11 / C ++中处理解释。
我不是在寻找代码,而是寻找一种方法:一种类似于此的子弹列表(如果这是接近正确的话):
也许有一种神奇的方式来获取纹理并将其包裹在球体周围而没有任何失真,然后我就可以生成纹理并将它们粘在球体上。但是你可以猜到,我不知道要走哪条路。
感谢任何方向!
答案 0 :(得分:1)
您需要在纹理贴图上打印数字。这种纹理实际上是一个“贴花”,粘贴在你的球体的一部分上。实现这样一个简单的固定贴花的简单方法是编写一个像素着色器,用于确定该点是在贴花区域的内部还是外部。如果不是,您可以进行额外测试以确定像素应该是白色背景还是彩色条纹。
您可以通过为每个顶点指定合适的纹理坐标来将贴图映射到球体,或者可以(也可能更干净地),您可以编写一个像素着色器,从3D模型坐标计算纹理坐标。
无论哪种方式,你总会在球体上产生扭曲。我建议你看看map projections,这些都解决了你在平面图像和球体之间进行转换的基本问题。我特别建议查看“gnomonic”和“orthographic”投影,这些投影都很容易理解和实现。
答案 1 :(得分:0)
如果您希望使用XNA / MonoGame / ANX解决它,该方法实际上取决于您使用的是Reach配置文件还是HighDef配置文件。
根据覆盖率资料,我建议:
在高调的情况下,编写像素着色器的情况是:
(我建议使用与Reach配置文件示例类似的技术渲染数字纹理。渲染文本是一种痛苦,因此可能会尽可能利用内置的东西)。 (前)XNA团队在http://create.msdn.com
提供了一个重新着色示例