2012-05-29 35 views
3

我一直致力於在XNA中實現2D照明系統,並且我已經使系統正常工作 - 只要我的窗口尺寸是2的冪。否則,程序將無法在該行:XNA中的TextureAddressMode

GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, Vertices, 0, 2); 

的例外規定「XNA框架河段配置文件需要使用TextureAddressMode紋理尺寸不在的兩個大國的時候要夾緊,」每當我已經嘗試爲解決這個問題已經失敗了 - 我在互聯網上找到的最常見的解決方案是將GraphicsDevice.SamplerStates[0] = SamplerState.LinearClamp;直接放在上面的行上面,但是這並沒有解決我的問題。

如果我遺漏了可能需要解決此問題的任何信息,我很抱歉;我會非常樂意根據需要提供更多信息。

+1

您是否使用了多個紋理階段?如果是這樣,您需要確保重置每個階段的採樣器狀態(這是[0]索引的用途)。如果不是,你使用任何着色器?着色器可以覆蓋地址模式。確保他們正確地設置它。 –

+1

我不確定你的意思是什麼紋理階段(我對此很新),但我使用着色器。我沒有自己寫,我不完全確定着色器在技術層面的工作原理 - 着色器如何設置地址模式,以及如何最好地將其返回到我需要的模式在嗎? – bionicOnion

+0

您可以在着色器中指定樣本狀態...所以您應該檢查hlsl代碼... – Blau

回答

1

這不是你以前問過的同一個問題嗎?

在HLSL中查找聲明像素着色器正在使用的採樣器的行。

您可以設置地址模式來鉗制這一行。

SamplerState somethingLikeThis { 
    Filter = MIN_MAG_MIP_LINEAR; 
    AddressU = Clamp; 
    AddressV = Clamp; 
}; 
+0

這可能位於effects.fx文件或類似文件中。 –