سؤال

باستخدام هذا الرمز يمكنني إرسال نسيج واحد إلى تظليل:

 devcon->PSSetShaderResources(0, 1, &pTexture); 

بالطبع أنا جعلت بتكستور من قبل:دي 3 دي إكس 11 كريتشادر ريسورسيفيو من الملف

تظليل:ملمس2د الملمس;

return color * Texture.Sample(ss, texcoord);

أنا حاليا فقط إرسال نسيج واحد إلى تظليل, ولكن أود أن أرسل القوام متعددة, كيف يكون هذا ممكنا?

يعطيكم الصّحة.

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

المحلول

باستخدام صفائف الملمس.عند ملء الخاص بك D3D11_TEXTURE2D_DESC نظرة على ArraySize عضو.هذا الهيكل تنازلي هو الذي يحصل على تمريرها إلى ID3D11Device::CreateTexture2D.ثم في تظليل الخاص بك يمكنك استخدام مؤشر أخذ العينات تكسكورد 3 الذي يشير إلى أي نسيج 2 د في الصفيف الذي تشير إليه.

تحديث: لقد أدركت للتو أنك قد تتحدث عن القيام بذلك عبر مكالمات متعددة (أي.الجغرافية المختلفة)، وفي هذه الحالة تقوم بتحديث عرض مورد نسيج التظليل.إذا كنت تستخدم إطار التأثيرات ، فيمكنك استخدامه معرف 3 دي إكس 11 تأثيرات شادر ريسورسي متغير:: سيتريسورس, ، أو بدلا من ذلك إعادة ربط نسيج جديد باستخدام PSSetShaderResources.ومع ذلك ، إذا كنت تحاول المزج بين مواد متعددة ، فيجب عليك استخدام مصفوفات النسيج.

قد تحتاج أيضا إلى النظر في القوام 3 د ، والتي توفر وسيلة طبيعية لاستيفاء بين القوام المجاورة في مجموعة (في حين يتم فرض المصفوفات 2 د تلقائيا إلى أقرب عدد صحيح) عن طريق العنصر 3 في تكسكورد.انظر هلسل sample ملاحظات.

نصائح أخرى

يمكنك استخدام قوام متعددة طالما أن عددهم لا يتجاوز مواصفات ملف تعريف Shader.هنا مثال: رمز HLSL: giveacodicetagpre.

c ++ رمز: giveacodicetagpre.

لذلك على سبيل المثال رمز HLSL أعلاه، سيكون: giveacodicetagpre.

أو: giveacodicetagpre. يمكن أن تكون أسماء

HLSL تعسفية ولا تضطر إلى تتوافق مع أي اسم محدد - فهارس فقط المسألة.أثناء "التسجيل (TXX)؛"البيانات غير مطلوبة، أود أن أوصي بك لاستخدامها لتجنب الارتباك حول الملمس الذي يتوافق مع الفتحة التي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top