سؤال

لدي شبكة من الخطوط المتعددة ، و أود أن عرض جميع أجزاء من الخطوط التي تكون داخل معين X-Y مربع.أنا حاليا تقديم الخطوط في برنامج OpenGL باستخدام GL_LINE_STRIP وأنها تعمل بشكل جيد.ومع ذلك ، إذا كانت الحدود X-Y مربع يعبر من خلال أحد الخطوط (بين القمم), هل هناك طريقة جيدة فقط عرض جزء من الخط الذي هو داخل الصندوق ؟

شكرا

جيف

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

المحلول

إذا المربع الخاص بك هو مجرد العادية ثنائي الأبعاد، محور alined المستطيل يمكنك استخدام وظيفة glScissor. وباختصار فإنه يعرف المستطيل 2D في إحداثيات الشاشة، حيث يأخذ كل مكان الرسم.

إذا القضية هي أكثر تعقيدا (مثل قد يكون لديك مستطيل على متن طائرة داخل المشهد 3D أو نحو ذلك ..) يمكنك رسم أول المستطيل الخاص في المخزن المؤقت الاستنسل وتمكين الاستنسل اختبار للخط-التقديم. هذا النهج يعطي لك مرونة غير محدودة حول الشكل الذي يقيد الرسم ولكن قد يكون أبطأ قليلا خلال تقديم ويأخذ المزيد من الجهد لإعداد.

نصائح أخرى

أعتقد نيلس Pipenbrinck أعطاك أفضل خيارين ، ولكن سوف رمي أخرى فقط للتأكد من اكتمالها:مقطع الطائرات (glClipPlane()).

وقال أعتقد glScissor() هو الحل الأسهل إذا كان سوف يكون دائما نافذة الانحياز.

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