لماذا يتم تقديم نص مكرر على المخزن المؤقت لـ Z من نسيج مختلف عند استخدام D3DXFONT :: DrawText؟

StackOverflow https://stackoverflow.com/questions/1358896

  •  20-09-2019
  •  | 
  •  

سؤال

لقد تعثرت على هذا لفترة من الوقت وكنت أتساءل عما إذا كان أي شخص قد واجه هذه المشكلة من قبل.

ينقسم التطبيق الذي أعمل عليه إلى مخططات بيانات متعددة وجدول زمني واحد في أسفل الشاشة. يتم تقديم كل قطعة (وهي في الواقع متعددة القوام طبقة فوق بعضها البعض) بالإضافة إلى تقديم الجدول الزمني إلى نسيج منفصل. يتم تقديم نسيج الجدول الزمني أولاً ، يليه كل من قوام المؤامرة من أعلى الشاشة إلى الأسفل. أنا أستخدم DXUT و DIRECTX9 (مارس 2009).

بعد إضافة نص زمني إلى نسيج الجدول الزمني ، لاحظت أن النص تكرر في شريط عنوان كل مؤامرة بيانات. فيما يلي شاشة جزء من الشاشة ، فإنه يظهر مجرد مؤامرة واحدة ، لكن النص يتكرر في كل قطعة مفتوحة:

alt text

يبدو أنه مرتبط مباشرة بالنص الذي يتم استدعاؤه في وظيفة تقديم الجدول الزمني. أنا أستخدم الإحداثيات النسبية حيث يتم تمرير المستقيم إلى السحب ، لكن بما أنني قمت بالفعل بتعيين هدف العرض على الملمس المطلوب ، يجب أن يؤثر فقط على الملمس الحالي. ليس كل نسيج يتم تقديمه بعد ذلك.

هل واجه أي شخص أي مشاكل مماثلة لهذا باستخدام D3DXFONT؟

تعديل: بعد المزيد من التجارب ، يبدو أن له علاقة مع المخزن المؤقت Z. عن طريق إضافة D3DCLEAR_ZBUFFER إلى CLEAR على كل سطح نسيج ، يتم اختفاء النص المكرر. على الرغم من أن المشكلة تبدو متوقفة في الوقت الحالي ، إلا أنني ما زلت أشعر بالفضول حول سبب كتابة المخزن المؤقت لـ Z لملمس منفصل تمامًا أثناء مكالمة النص.

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

المحلول

حالة Z العازلة ثابتة.

علي سبيل المثال،

SetDepthStencilSurface(X)
SetRenderTarget(A)
Draw()
SetRenderTarget(B)
Draw()

كلا مكالمات السحب سوف تستخدم نفس العازلة العمق.

لا يقوم DrawText بتغيير المخزن المؤقت للعمق الذي قمت بتعيينه. يفترض أنك تقصد أن تفعل ما فعلته.

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