[英]How to create MipMaps in SharpDX Toolkit (2.5)
我正在使用SharpDX-Toolkit,無法在Texture2D上創建mimap。 如果我由內容管理器加載紋理並嘗試調用GenerateMipMaps(),則會收到NotSupportedException:
無法為此紋理生成Mipmap(必須為RenderTarget和ShaderResource,且MipLevels> 1
代碼(在GameClass的LoadContent-Method中):
Texture2D texture = this.Content.Load<Texture2D>("MyTexture");
texture.GenerateMipMaps(this.GraphicsDevice); <- Exception thrown in this line
我不知道該怎么辦,希望有人能幫助我解決這個問題。 謝謝。
使用:
Texture2D texture = this.Content.Load<Texture2D>("MyTexture");
將默認的紋理用法設置為“不可變”,並且僅將綁定作為“着色器視圖”使用。
為了生成MipMap,需要將“用法”設置為“默認”並綁定為ShaderView / RenderView。
現在您有幾個選擇:
1 /使用mipmaps將紋理預處理為dds,加載程序會將此考慮在內。
TexConv可以為您做到這一點。 (使用-m指定級別計數)。
2 /如上所述加載紋理,使用創建第二個紋理
Texture2D texturewithmips = Texture2D.New(device, texture.Width, texture.Height, MipMapCount.Auto, texture.Format,
TextureFlags.ShaderResource | TextureFlags.RenderTarget,
1,Direct3D11.ResourceUsage.Default);
現在,您需要使用復制第一個Mip:
device.Copy(texture, 0, null, t2, 0);
您現在可以使用:
t2.GenerateMipMaps(this.GraphicsDevice);
3 /由於使用上述方法,您可能會丟失內容管理器(為您提供自動緩存)。
您可以通過添加更多紋理加載選項來修改TextureContentReader類來為您做到這一點。
如果您需要更多幫助,請隨時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.