根据游戏生成的值将多个纹理渲染到球体

时间:2011-07-04 20:21:31

标签: xna xna-4.0

我和我的朋友正在制作游戏,涉及根据某些属性随机生成行星。最初这个游戏都是2D游戏,但是现在我们已经决定在游戏中增强行星的目的并使其成为2.5D,行星在2D世界中被渲染为3D球体。现在,到目前为止,我们还有一个与行星看起来相似的好事。我们使用了分层纹理,每个属性(水,土地,大气)都有一个,这取决于我们的算法如何创造地球。这看起来很漂亮,但行星表面很大程度上是跛脚的,并且没有变化,因为它们都是用相同的几个纹理制成的。

现在我们正在进行3D,我想创建一个漂亮的行星地图,它将根据其属性确定地球的地形,使每个行星都有不同的水体,陆块等。我也想绘制基于该地图的行星表面上的不同纹理,它们在边缘处混合在一起。

我考虑了两种可能性:将基于地图的纹理渲染到RenderTarget,然后将RenderTarget包裹在我的球体模型周围,或者将地图转换为顶点数据并编写着色器以使用适当的权重绘制纹理。

问题是,我是RenderTargets和HLSL的新手(事实上,我甚至不知道RenderTarget方法是否可行),所以我觉得需要一些指导。基于生成的地形图,建议将多个纹理渲染到球体模型?此外,是否有任何关于创建地形图的格式的建议(这将是某种数据结构,它代表地球表面任何坐标上的地形类型)?

我已经看过其他多纹理教程,但它们似乎都基于预先确定的纹理或一组值。我需要能够在游戏中随机生成地形。

1 个答案:

答案 0 :(得分:4)

此链接是一系列有关行星着色器的教程。

Planet Shaders