سؤال

حاولت رسم خطا بين رأيتين مع D3D11. لدي بعض الخبرات في D3D9 و D3D11، ولكن يبدو أنها مشكلة في D3D11 لرسم خط، والذي يبدأ في واحد بكسل معطى وينتهي في الآخر.

ما فعلته:

  1. أضفت 0.5F إلى إحداثيات البيكسل لكل قمة لتناسب نظام تنسيق Texel- / Pixel (قرأت صفحات Microsoft إلى D3D9 و D3D11 تنسيق أنظمة الإحداثيات):

    f32 foff= 0.5F؛ coloredvertex newstices [2]= { {d3dxvector3 (fstartx + foff، fstarty + foff، 0)، veccolorrgb}، {d3dxvector3 (fendx + foff، fendy + foff، 0)، veccolorrgb} }؛

  2. ولدت مصفوفة الإسقاط ortho لتناسب هدف التجسيد:

    d3dxmatrixorhooffcenterlh (& matrixorthoproj، 0.0f، (f32) urtwidth، 0.0f، (f32) urtheight، 0.0f، 1.0f)؛ D3DXMATIXTRANSPOUDE (& cbconstant.m_matorthoprojection، & matrixorthoproj)؛

  3. set rasterizerstate، Blendstate، viewport، ...

  4. رسم رؤوس كما D3D11_Primitrister_topology_linelist

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

    هو أي برنامج تعليمي يشرح هذه المشكلة أو هل لدى أي شخص نفس المشكلة؟ كما أتذكر أنه لم يكن الأمر صعبا في D3D9.

    يرجى السؤال عما إذا كنت بحاجة إلى مزيد من المعلومات.

    شكرا، ستيفان

    تحرير: وجدت قواعد التقطير ل D3D10 (يجب أن تكون هي نفسها ل D3D11): http://msdn.microsoft.com / EN-US/Library/cc627092٪28V=VS.85٪29.aspx#line_1

    آمل أن يساعدني هذا في فهم ...

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

المحلول

وفقًا لقواعد التحويل النقطي (الرابط في السؤال أعلاه) ربما وجدت حلاً يعمل:

  1. رتب القمم StartX
  2. أضف (0.5 / 0.5) إلى قمة البداية (كما فعلت من قبل) لتحريك الرأس إلى مركز البكسل
  3. أضف (1.0 / 1.0) إلى قمة النهاية لتحريك الرأس إلى الركن الأيمن السفلي

هذا ضروري لإخبار أداة التحويل بأنه يجب رسم آخر بكسل في السطر. Genacodicetagpre

إذا كنت تعرف حلاً أفضل ، فيرجى إبلاغي بذلك.

نصائح أخرى

لا أعرف D3D11 ، ولكن مشكلتك تشبه إلى حد كبير حالة عرض D3DRS_LASTPIXEL من D3D9 - ربما يكون هناك مساوٍ لـ D3D11 تحتاج إلى النظر فيه.

واجهت نفس المشكلة بالضبط، وأنا ثابت شكرا على هذه المناقشة.

يتم تخزين رؤوسي في المخزن المؤقت D3D11_Primitive_topology_linelist Vertex.

شكرا لهذا المنصب المفيد، لقد جعلتني إصلاح هذا الخطأ اليوم. كان من الصعوبة حقا مما كنت اعتقد في البداية.

هنا خط قليل من التعليمات البرمجية الخاصة بي. giveacodicetagpre.

اختبرت العديد من مكالمات Drawline2D، ويبدو أنها تعمل بشكل جيد.

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