الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة عند رسم مضلع بسيط مكون من 6 نقط

بدأه EnigmaLine في 2 يونيو 2011 · 10 رد · 1,512 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

انا برسم مضلع مكون من 6 نقط وانا برسمه فى وضع الملئ بس بتظهرلى مشكلى غريبة جدا مش عارف ايه السبب انا مرفق 4 صور تبينالمشكله بالظبط

الصورة الاولى تبين النقط

الصورة الثانية تبين المضلع فى حالة الملئ

الصورة الثالثة المضلع فى حالة الخطوط

الصورة الرابعه المضلع : الواجهه فى حالة خطوط والخلف فى حالة الملئ

ياريت حد يبص على الصور ويقولى المشكله فين

Photo.rar

#2

وعليكم السلام ورحمة الله وبركاته .

هل تقصد أن هناك مشكلة في الصورة الرابعة ؟

عند رسم أي شكل داخل فيجب أن تتقيد باتجاه رسم واحد ( مع اتجاه عقارب الساعة ) أو ( عكس اتجاه عقارب الساعة) ، بعد أن تحدد ذلك في glvertix ، تخبر OpenGL بذلك عن طرق glFrontFace ثم تضع خياراتك التي تريد بالنسبة للوجه الأمامي و الخلفي للشكل عن طريق glPolygonMode. حيث أحياناً وبسبب طريقتك الغير مرتبة في ترتيب النقاط ، يتم رسم الوجه الأمامي بشكل ، و الخلفي بشكل آخر ..

لمساعدتك بشكل أفضل ، يمكن أن تضيف جزء من الكود ، أو على الأقل تحدد طريقتك في الرسم ، والدوال و الثوابت التي استخدمت ..

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3
glBegin(GL_POLYGON);
		glVertex2f( 0.61, -1.39);
		glVertex2f(-0.02,-1.39);
		glVertex2f( -0.02,-0.48);
glVertex2f( -0.98, -0.48);
		glVertex2f(-1.00,-0.02);
		glVertex2f( 0.61,-0.02);
	glEnd();

انا برسم عادى بكود عادى جدا بس هيا ايه المشكله ان انا لو غيرت اتجاه الرسم ده مهم جدا على فكره انا برسم مضلع من اكثر من نقطه يعنى ايه لازم النقط تبقى فى اتجاه واحد مش فاهمها دى ياريت توضحلى اكتر

#4

ايه ياجماعة مافيش حد عارف حل المشكلة دى ايه ياريت حد يجرب الكود ويقولى النتيجة

#5

up

#6

السلام عليكم ورحمة الله وبركاته

الكلام ده لاقيته على النت ياريت اللى يعرف عنه حاجه يقولى ضرورى

Opengl's Polygon mode only works with convex polygons.

http://en.wikipedia.org/wiki/Convex_polygon

You can either use the stencil buffer to draw concave polygons, or turn the polygon into triangles in what is called "triangulation".

#7

السلام عليكم, ما قاله الأخ الشمري صحيح تماما, إليك التالي:

في حالة رسم مضلع ,فإن التطبيق سيأخذ منك مجموعة النقاط vertex ثم يرسمها بالترتيب.

يمكنك إستعمال السطر التالي للتخلص من مشكلتك إن لم تكن لك جدية في معرفة الأسباب

glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); 
glBegin(GL_POLYGON);
....
....
....
glEnd();

قبل رسم الشكل.

تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

future.jpg
#8

معلش مش فاهم كلامك كويس يعنى الكود هايبقى كده

glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); 
glBegin(GL_POLYGON);
....
....
....
glEnd();


glBegin(GL_POLYGON);
                glVertex2f( 0.61, -1.39);
                glVertex2f(-0.02,-1.39);
                glVertex2f( -0.02,-0.48);
glVertex2f( -0.98, -0.48);
                glVertex2f(-1.00,-0.02);
                glVertex2f( 0.61,-0.02);
        glEnd();

كدة الكود كله صح ولا غلط علشان انا جربته ومش شغال برضه

#9
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); 
glBegin(GL_POLYGON);
                glVertex2f( 0.61, -1.39);
                glVertex2f(-0.02,-1.39);
                glVertex2f( -0.02,-0.48);
glVertex2f( -0.98, -0.48);
                glVertex2f(-1.00,-0.02);
                glVertex2f( 0.61,-0.02);
        glEnd();

تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

future.jpg
#10
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); 
glBegin(GL_POLYGON);
                glVertex2f( 0.61, -1.39);
                glVertex2f(-0.02,-1.39);
                glVertex2f( -0.02,-0.48);
glVertex2f( -0.98, -0.48);
                glVertex2f(-1.00,-0.02);
                glVertex2f( 0.61,-0.02);
        glEnd();

ما انا الكود ده اللى بستخدمه وهوا اللى مش شغال معايا وبيعمل المشكله اللى انا كاتبها

#11

اللى قدرت اوصله لحد دلوقتى ان فى حاجه اسمها draw concave polygons هيا دى اللى بتظبط رسم المضلعات

ياريت اللى عارف عنها حاجه يقولى

مواضيع مشابهة