合并纹理上的XNA纹理坐标

时间:2012-01-01 23:15:52

标签: xna xna-4.0 texture-mapping

我遇到纹理坐标问题。首先,我想描述一下我想做什么然后我会问这个问题。

我想拥有一个只使用一个大纹理的纹理更多的网格物体。大纹理合并网格在其中使用的所有纹理。我做了一个合并纹理的例程,这没有问题,但我仍然要修改纹理坐标,所以现在只使用一个纹理而不是很多纹理的网格可以很好地放置。

见图:

enter image description here

在左上角我得到了一个纹理(我们称之为A)我合并为一个大纹理,右边一个(B)。 A的左上角是0,0,右下角是1,1。为了方便使用,我们可以说B.width = A.width * 2也适用于高度。所以在B上,迷你纹理(M原来是A)的右下角应该是0.5,0.5。

到目前为止,我没有理解这些问题,我希望我理解它。但问题是,有纹理坐标是:

  • 1以上

关于原件A.这些应该是什么?

让我们说,A有-0.1,0 - 在B内的M上是-0.05,0吗?

那些在0..1区域之外的数字怎么样? B上-3.2,0是A -1.6还是-3.1?所以我剪辑了%1并除以2的部分(因为我上面说过宽度是双倍)或者我应该将整数除以2吗?据我所知,到目前为止,这个区域之外的数字是关于镜像纹理的。我如何管理它,所以输出不包含B?

的橙色纹理

如果我的问题不够明确(我的英语水平不高),请询问,我会编辑/回答,只是帮助我清除我的困惑:))

提前致谢: 彼得

1 个答案:

答案 0 :(得分:0)

单个纹理的坐标为[0-1,0-1]范围

新纹理的坐标为[0-1,0-1]范围

在由四个单一纹理组成的新纹理中,你的算法必须以这种方式转换纹理坐标。

  • 蓝色单方纹理将在[ 0-0.5 中有新坐标, 0-0.5]范围
  • 橙色单方纹理将具有新坐标 在[ 0.5-1 ,0-0.5]范围内