هل هناك بديل لـ glpolygonmode في Open gl es/webgl؟
سؤال
أرغب في إنشاء لعبة في وضع سلكية الإطار ، ولكن بدون أمر glpolygonemode ، لا أعرف كيف سأفعل ذلك. هل هو شيء يمكنني أن أشهده بنفسي بما هو متاح؟ أنا جديد تمامًا على OpenGL. إذا كان أي شخص قد فعل هذا ولديه مقتطف الرمز ، فأنا أحب أن أراه. أي مساعدة موضع تقدير.
المحلول
من المتصور أنه يمكنك تقديم المشهد بأكمله باستخدام gl_lines
نصائح أخرى
لسوء الحظ ، قد تضطر إلى الواقع تمامًا قم بتحويل الهندسة الخاصة بك إلى خطوط الخطوط الأولية وجعلها تستخدم GL_LINES
. ومع ذلك ، فإنه بالطبع لم يتم القيام به ببساطة GL_TRIANGLES
(أو أيا كان) مع GL_LINES
في مكالمات السحب الخاصة بك ، سيتعين عليك إعادة ترتيب رؤوسك بالكامل لإقامة الوضع البدائي الجديد. هذا يتطلب منك على الأقل استخدام صفائف فهرس مختلفة في glDrawElements...
المكالمات أو ، لتقديم الفهرس (glDrawArrays...
) ، صفائف قمة مختلفة تمامًا (على الرغم من ذلك ، في حالة اختيار فعل ذلك حقًا ، قد تكون هذه هي اللحظة المناسبة للتبديل إلى الرسم المفهرس بدلاً من ذلك).
إذا كان لديك ، ومع ذلك ، لديك تظليل الهندسة متاح (على الرغم من أنه يبدو أن WebGL لا يدعمهم ، يجب على OpenGL ES منذ 3.2 ، وكذلك Desptop GL glPolygonMode
على أي حال) ولا تستخدمها بالفعل لشيء آخر ، تصبح الأمور أسهل. في هذه الحالة ، يمكنك فقط تثبيت بسيطة إلى حد ما تظليل الهندسة بين قمة الرأس ومعالجة الشظايا التي تأخذ المثلثات والمخرجات 3 خطوط لكل منهم:
layout(triangles) in;
layout(line_strip, max_vertices=4) out;
void main()
{
for(int i=0; i<4; ++i)
{
// and whatever other attributes of course
gl_Position = gl_in[i%3].gl_Position;
EmitVertex();
}
}
إذا كنت تستخدم التواصل الصحيح القائم على التظليل القائم على الكتلة ، فيجب أن تكون قادرًا على استخدام قمة الرأس الحالية وتظليل الشظايا للباقي وتواصل فقط هذا التظليل الهندسي بينهما لتقديم الإطار السلكي لجميع أنواع البدائية القائمة على المثلث.