簡體   English   中英

如何在SharpDX Toolkit(2.5)中創建MipMaps

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM