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

الإكساء وحفظ المعلومات

بدأه To HigH في 29 أبريل 2010 · 1 رد · 677 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا من المتابعين لهذا المنتدى وبالأخص لهذا القسم ( openGL )

شاهدت هنا مواضيع تتعلق بالأكساء ،،

لكن سؤالي : هل استخدام الإكساء هو نفسه استخدام Pattern .؟

وإذا كان كذلك فانا أشاهد دروس وتطبيقات بهذا المنتدى عن الإكساء على جسم ( أو شكل مضلع أو غيره) ولكن لم أشاهد الإكساء على الشاشة ( screen) ،،

فهل أستطيع عمل الإكساء على الشاشة ؟

لأن هذا جزء من مشروع لي ،، وأريد أن اتأكد من صحة بدايتي في عمله ،،

وشيء أخر بالإكساء (Pattern ) يترتب عمله عليهم وهو:

fit to screen, tile and center

فما علاقة tile بالـ الإكساء ؟؟

بمعنى أخر هل يعني عمل الصورة كقطع متجاورة( كـ البلاط ) لملئ الشاشة ؟

ومع ( tile ) يتطلب عمل : viewports to tile the background ،

اطلعت على موضوع الأخ : الشمري ( درس : view port " منفذ الرؤية " في OpenGL .. )ا

/index.php?showtopic=134790

ولكن لم أستطع فهم ( tile ) حتى أتمكن من ربطهما معاً ؟

شيء أخر عند عمل رسم معين على الشاشة ،،

هل أستيطع عمل حفظ المعلومات عن شكل معين ( سواء كانت مربع او خط مستقيم أو غيره ) لحين ادخال شكل آخر ...؟؟

أعرف أنني أكثرت من الإستفسارات،

لكن لم أقم بإنزال هذا الموضوع إلا بعد بحث بالمواقع بشكل عام وبهذا الموقع بشكل خاص ،، ولكن لم أجد الإجابة ،

وشكراً جزيلاً

1
#2

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

1- في OpenGL هناك شيء يسمّى Pattern وهو يختلف نوعاً ما عن الاكساء .. بالرغم من أن ترجمة Pattern و Texture قد تكون متقاربتين لو تكلمنا خارج نظاق OpenGL . عموماً Pattern لافائدة من استخدامه فهي تقنية قديمة لا داعي لاستخدامها ..

2- الاكساء في OpenGL يتم على شكل معين مثل " مستطيل " ، تستطيع أن تجعل أبعاد المستطيل مماثلة لأبعاد النافذة ثم تطبق الاكساء . الان ، يمكنك أن تحدد عدد مرات التكرار ، Tiles من خلال خصائص الاكساء نفسه ، وبالتحكم أيضاً باحداثيات الاكساء .

سأفرض أنك تعرف ترسم مستطيل وتقوم باكساءه ،

يمكنك أن تكرر صورة الاكساء بالتحكم بالاحداثيات الخاصة بالاكساء :

glBegin(GL_QUADS);

 glTexCoord2f(0, 0); //
 glVertex2f(0, 0 );

 glTexCoord2f(2, 0); // 
 glVertex2f( 2, 0 );

 glTexCoord2f(2, 2); // 
 glVertex2f( 2, 2 );

 glTexCoord2f(0, 2); // 
 glVertex2f(0, 2 );

glEnd();

لاحظ أن احداثيات الاكساء ليست الرقم 1 ، انما تأخذ الرقم 2 ، وهذا يعني أن الصورة سترسم مرتين ويتم التكرار ، لكن تأكد أن معاملات التكرار معيّنة بهذه الطريقة :

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);

S : تمثل المحور الافقي ، مثل X ولكن تسمية أخرى.

T : تمثل المحور الرأسي ، مثل Y ولكن تسمية أخرى أيضاً .

نفذ تطبيق وغير في احداثيات الاكساء ولاحظ التأثيرات الناتجة حتى تستوعب كيف حدث ذلك .

اقتباس
هل أستيطع عمل حفظ المعلومات عن شكل معين ( سواء كانت مربع او خط مستقيم أو غيره ) لحين ادخال شكل آخر ...؟؟

استخدام مصفوفة أو std::vector مثلاً ..

تخزن معلومات Object معين في مصفوفة ديناميكية مثل std::vector ، وعندما تنتهي من عملك تستورد هذه المعلومات من المصفوفة دفعة واحدة وترسمها .

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

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