2012-01-01 58 views
0

我遇到了紋理座標問題。首先我想描述一下我想做什麼,然後我會問這個問題。合併紋理上的XNA紋理座標

我想擁有一個只使用一個大紋理的紋理更多的網格。大紋理合併網格在其中使用的所有紋理。我做了一個合併紋理的例程,這是沒有問題的,但我仍然需要修改紋理座標,所以現在只使用一個紋理而不是許多紋理的網格已經放置得很好。

看到的景象:

enter image description here

在左上角我得到了紋理的一個(我們稱之爲A)我合併成一個大的質感,右一個(B)。 A的左上角是0,0,右下角是1,1。爲了便於使用,我們假設B.width = A.width * 2等等。所以在B上,迷你紋理(M原來是什麼)的右下角應該是0.5,0.5。

我沒有理解這些到目前爲止的問題,我希望我明白了。但這裏的問題是,有紋理座標是:

  • 以上1

原始A.應該將這些是M上怎麼辦?

比方說,A有-0.1,0 - B上的M是-0.05,0?

那些在0..1區域以外的數字呢?在B上的-1.6或-3.1是-3.2,0?因此,我剪下部分是%1併除以2(因爲我上面說過寬度是雙倍)還是應該將整數除以2?據我瞭解,到目前爲止,這個區域以外的數字是關於鏡像紋理的。我如何管理它,所以輸出不包含B的橙色紋理?

如果我的問題不夠清楚(我沒有太多熟練的英文),請向我會編輯/答案,只是幫我清楚我的困惑:)

在此先感謝: 彼得

回答

0

單個紋理具有座標[0-1,0-1]範圍

的新的紋理具有座標[0-1,0-1]範圍

在您的由四個單組成新的紋理紋理,你的算法必須翻譯紋理這樣配合。

  • 藍單個方形紋理將在[0-0.5, 0-0.5]範圍
  • 橙單個方形紋理新座標將有新的座標 在[0.5-1,O- 0.5]範圍
+0

我明白了。那些超出範圍的座標呢?那裏有翻譯的規定嗎? (從[0-1,0-1]開始[0-0.5,0-0.5]只是一個簡單的劃分,但如果[0-1,0-1]中的座標不在範圍內,但1.3或-4.7等?) – 2012-01-02 07:27:34

+1

你應該閱讀關於[紋理映射](http://msdn.microsoft.com/en-us/library/bb976075(v = xnagamestudio.31).aspx),關於xna 3.1,但信息是有效的,雖然在xna 4.0中,你只有三種尋址模式包裝,鏡像和鉗位。您始終必須以同樣的方式處理範圍內外的值,問題在於使用的是紋理尋址模式......如果不是鉗位,則會出現問題,因爲複製包裝和鏡像地址不值得 – Blau 2012-01-02 09:40:15