【问题标题】:XNA texture coordinates on merged textures合并纹理上的 XNA 纹理坐标
【发布时间】:2012-01-02 08:40:33
【问题描述】:

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

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

看图:

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

到目前为止,我在理解这些方面没有任何问题,我希望我能理解它。但这里的问题是,纹理坐标是:

  • 1以上
  • 否定

在原来的 A 上。这些在 M 上应该是什么?

假设 A 有 -0.1,0 - 是 -0.05,0 在 B 内部的 M 上吗?

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

如果我的问题不够清楚(我的英语不太熟练),请提问,我会编辑/回答,帮助我消除困惑:)

提前致谢: 彼得

【问题讨论】:

    标签: xna xna-4.0 texture-mapping


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我明白了。那些超出范围的坐标呢?翻译有什么规定吗? (从 [0-1,0-1] 生成 [0-0.5,0-0.5] 只是一个简单的除法,但是如果 [0-1,0-1] 中的坐标不在范围内怎么办,但 1.3 或 -4.7 等?)
    • 你应该阅读这篇关于texture mapping的文章,是关于xna 3.1的,但信息是有效的,尽管在xna 4.0中你只有三种寻址模式wrap、mirror和clamp。对于范围内和范围外的值,您总是必须以相同的方式工作,问题在于使用的是哪种纹理寻址模式......如果不是钳位,您就有麻烦了,因为复制包装和镜像寻址可能不值得
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    相关资源
    最近更新 更多