Pregunta

Estoy usando el sharpDX-toolkit y no puedo crear mimaps en una texture2d. Si cargo una textura del Administrador de contenido e intento llamar a GeneratEMIPMaps () Recibo una NotSupportedException:

No se puede generar mipmaps para esta textura (debe ser RenderTarget y ShaderResource y Miplevels> 1

Código (en el método de contenido de carga de la clase de juego):

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

No sé qué hacer y espero que alguien pueda ayudarme con este problema. Gracias.

¿Fue útil?

Solución

Usando:

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

El uso de textura predeterminado a "Immutable" y solo permitirá la vinculación como vista de sombreador.

Para generar MIPMAPS, el uso debe ser predeterminado y vinculante como ShaderView/Renderview.

Ahora tienes algunas opciones:

1/Preprocese sus texturas como DDS con MIPMAPS, el cargador tendrá esto en cuenta.

TexConv puedo hacer eso por ti. (Use -M para especificar el recuento de niveles).

2/Cargue su textura como arriba, cree una segunda textura usando

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

Ahora necesita copiar el primer MIP, usando:

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

Ahora puedes usar:

t2.GenerateMipMaps(this.GraphicsDevice);

3/Dado que con el método anterior pierde el Administrador de contenido (con cachés automáticos para usted).

Puede modificar la clase TextureContentReader para hacerlo por usted, agregando más opciones para la carga de textura.

Si necesita más ayuda, siéntase libre.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top