سؤال

أنا أستخدم SharpDX-Toolkit ولا يمكنني إنشاء محوّر على نسيج 2d. إذا قمت بتحميل نسيج بواسطة مدير المحتوى وحاولت استدعاء cenerateMiPmaps () ، أتلقى notsupportedException:

لا يمكن توليد MIPMAPS لهذا الملمس (يجب أن يكون RenderTarget و Shaderresource و Miplevels> 1

الكود (في MoledContent-Method من فئة اللعبة):

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

لا أعرف ماذا أفعل وآمل أن يساعدني أي شخص في هذه القضية. شكرًا.

هل كانت مفيدة؟

المحلول

استخدام:

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

سوف يستخدم استخدام الملمس الافتراضي إلى "غير قابل للتغيير" وسيسمح فقط بالربط كعرض تظليل.

من أجل إنشاء MIPMAPs ، يجب أن يكون الاستخدام افتراضيًا وملزمًا ككلا من Shaderview/Renderview.

الآن لديك بعض الخيارات:

1/المعالجة المسبقة لقوامك مثل DDs مع MIPMAPs ، سوف يأخذ المحمل هذا في الاعتبار.

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 مع الإسناد
لا تنتمي إلى StackOverflow
scroll top