سؤال

حاولت البحث في قوقل و البحث في كومة ولكن لم أجد أي شيء :-(
( رسم الأشكال غير النظامية أو غيرها من المضلعات (كاريكاتير, العفاريت) إلى مثلثات في OpenGL ES )

أريد أن ألفت شغلها المضلع برنامج OpenGL ES على آي باد (2D, لا تحتاج 3D) (انا جديد على برنامج OpenGL && OpenGL ES) يبدو بسيط على برنامج OpenGL ولكن مع وفاق مع فقط يمكن رسم المثلث.

ولكن أنا لا يمكن العثور على أي تعليمي جيد عن هذا :-( هل توجد أي المجمع / مكتبة أو أي شيء آخر يمكن أن تساعدني ؟

أنا لا تريد استخدام CoreGraphics, انها بطيئة جدا على ما تفعله ^^
و إذا كان ذلك ممكنا ، وتجنب أيضا (الكبير) المكتبة مثل Cocos2D.

تحرير :والعمل على حل المشكلة, وهنا بعض الروابط المفيدة (سيتم تحرير)
الروابط
- المضلع التثليث
http://www.vterrain.org/Implementation/Libs/triangulate.html
http://en.wikipedia.org/wiki/Polygon_triangulation (ويكي) http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml (مضلع بدون ثقوب) http://www.cs.unc.edu/~dm/CODE/GEM/chapter.html (مضلع مع الثقوب ، ج كود)

الحل
سأحاول باستخدام المضلع التغطية بالفسيفساء على مثلثات.في البداية انا ذاهب الى محاولة ( http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml ) و كما أريد المضلع مع الثقوب ، والثاني ( http://www.cs.unc.edu/~dm/CODE/GEM/chapter.html ). إذا كان أي شخص لديه طريقة أفضل, من فضلك قل لي مع تعليق ^^

شكرا :-)

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

المحلول

Cocos2d IS Cool Library Warp OpenGL ولديه العديد من الميزات المفيدة (بشكل أساسي للألعاب على سبيل المثال لا الحصر).

لاستخدام التربط polygon:http://flipcode.net/archives/fffice_polygon_triangulation.shtmlلقد استخدمتها من قبل وعملت بشكل جيد.

نصائح أخرى

لم أحاول استخدام OpenGL ES ، ولكن انطلاقًا من نظرة سريعة في الوثائق التي يجب أن تكون قادرًا على رسم ملف محدب المضلع باستخدام مثل "مروحة مثلث":

glVertexPointer(2, ..., arrayOfCoordinates)
...
glDrawElements(GL_TRIANGLE_FAN, ... , arrayOfIndices);

يمكنك التفكير في "مروحة مثلث" حيث أن المتحدثين عن عجلات الدراجات تقسم منطقة العجلة إلى "مثلثات" (الحافة الخارجية لعجلة الدراجات هي بالطبع ، لكن آمل أن تحصل على الفكرة).

تحديث: لقد وجدت مخططًا صغيرًا على الويب:http://www.cse.msu.edu/~cse472/step6_stuff/step6.1.gif

على صفحة الحديث عن التثليث في ويكيبيديا ، أزعم أن المزيد من المثلثات ستكون في الواقع أسرع.

لقد كتبت أ محرك التثليث الذي يدعم الثقوب ويعمل في وقت O (n log (n)). لقد اختبرته تحت GDK ثم صنعت تطبيق Android منه.

ما هو اختيارك الأخير؟ لقد اختبرت مؤخرًا 5 من libs المدرجة في الرابط أدناه: http://vterrain.org/implementation/libs/triangulate.html

لكن لا أحد منهم مرضي ...

  1. iPhone-glu: (http://code.google.com/p/iphone-glu/)

    • البق في الخوارزمية؟ هناك ثقوب صغيرة غير مملوءة ، أو في بعض الأحيان ترسم خارج المضلع
  2. Triangulte: (http://www.flipcode.com/archives/fffice_polygon_triangulation.shtml)

    • لا يدعم الثقوب ...
  3. التثليث: (http://www.cs.unc.edu/~dm/code/gem/chapter.html)

    • عربات التي تجرها الدواب ، في بعض الأحيان تنفد من الحدود ، أو الفهرس السلبي وما إلى ذلك ...
  4. poly2tri: (http://code.google.com/p/poly2tri/)

    • عربات التي تجرها الدواب ، تحطم في بعض الحالات
  5. OpenGlespolygon: (https://github.com/nrots/openglespolygon)

    • خوارزمية غير كاملة؟ هناك ثقوب صغيرة (غير مملوءة) على طول حواف المضلع

في OpenGL غير OpenGL ، يميل المرء إلى استخدام Tessellator من مكتبة GL Utility (GLU). وجدت هذا المشروع الذي يهدف إلى إتاحة GLU لجهاز iPhone ويدعي أنه يدعم التزحمي المضلع - إذا كان يعمل ، فسيكون ذلك خيارًا جيدًا.

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

للتقديم استخدام GL_TRIANGLE_STRIP.

ولكن قراءة المؤتمر الشعبي العام رخصة الأولى!

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