Domanda

Sto usando il toolkit Sharpdx e non riesco a creare mimaps su una texture2d. Se carico una trama da parte di Content Manager e provo a chiamare generateMipMaps () ricevo una Exception Notsupported:

Impossibile generare mipmaps per questa trama (deve essere rendertarget e shaderresource e meplevels> 1

Codice (nel metodo di carico della classe di gioco):

Texture2D texture = this.Content.Load<Texture2D>("MyTexture");
texture.GenerateMipMaps(this.GraphicsDevice); <- Exception thrown in this line

Non so cosa fare e spero che qualcuno possa aiutarmi con questo problema. Grazie.

È stato utile?

Soluzione

Usando:

 Texture2D texture = this.Content.Load<Texture2D>("MyTexture");

Sarà l'utilizzo della trama predefinito a "immutabile" e consentirà solo l'associazione come vista shader.

Per generare mipmaps, l'utilizzo deve essere predefinito e vincolante sia come shaderview/renderview.

Ora hai alcune opzioni:

1/Preprocesso delle trame come DDS con mipmaps, il caricatore lo prenderebbe in considerazione.

TexConv può farlo per te. (Usa -M per specificare il conteggio dei livelli).

2/Carica la trama come sopra, crea una seconda trama utilizzando

 Texture2D texturewithmips = Texture2D.New(device, texture.Width, texture.Height, MipMapCount.Auto, texture.Format,
 TextureFlags.ShaderResource | TextureFlags.RenderTarget,
 1,Direct3D11.ResourceUsage.Default);

Ora devi copiare il primo MIP, usando:

device.Copy(texture, 0, null, t2, 0);

Ora puoi usare:

t2.GenerateMipMaps(this.GraphicsDevice);

3/poiché con il metodo sopra perdi un po 'il gestore dei contenuti (con cache automatiche per te).

È possibile modificare la classe TextureContenTender per farlo per te, aggiungendo più opzioni per il caricamento della trama.

Se hai bisogno di più aiuto, sentiti libero.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top