1

SharpDX-Toolkit を使用していますが、Texture2D で mimap を作成できません。コンテンツ マネージャーによってテクスチャをロードし、GenerateMipMaps() を呼び出そうとすると、NotSupportedException が発生します。

このテクスチャのミップマップを生成できません (RenderTarget と ShaderResource と MipLevels > 1 でなければなりません)

コード (Game-Class の LoadContent-Method 内):

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

どうすればいいのかわからないので、誰かがこの問題で私を助けてくれることを願っています。ありがとう。

4

1 に答える 1

3

使用:

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

テクスチャの使用をデフォルトで「不変」にし、シェーダー ビューとしてのバインドのみを許可します。

MipMap を生成するには、ShaderView/RenderView の両方として使用法を Default および Binding にする必要があります。

いくつかのオプションがあります。

1/テクスチャをミップマップ付きの dd として前処理します。ローダーはこれを考慮します。

TexConvはそれを行うことができます。(レベル数を指定するには -m を使用します)。

2/上記のようにテクスチャをロードし、次を使用して 2 番目のテクスチャを作成します。

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

次を使用して、最初のミップをコピーする必要があります。

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

使用できるようになりました:

t2.GenerateMipMaps(this.GraphicsDevice);

3/上記の方法を使用すると、コンテンツマネージャーが失われます(自動キャッシュを使用)。

テクスチャ読み込みのオプションを追加することで、TextureContentReader クラスを変更して、それを行うことができます。

さらにヘルプが必要な場合は、お気軽にお問い合わせください。

于 2013-11-07T18:27:29.483 に答える