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

من ويكيبيديا، الموسوعة الحرة
اذهب إلى: تصفح، ‏ ابحث
مكتبة الرسوميات المفتوحة
شعار أوبن جي إل
المطور سيليكون غرافيكس
آخر إصدار 4.4 / 2013-07-22؛ منذ 513 يومًا
الإصدار التجريبي 11 أوت، 2008
نظام تشغيل متعدد المنصات
النوعية و ب ت
الترخيص مختلف
موقع وب http://www.opengl.org

تعديل

مكتبة الرسوميات المفتوحة أو أوبن جي إل (Open Graphics Library) عبارة عن واجهة برمجة التطبيقات مستقلة المنصة (تعمل في عدة بيئات وعدة أنظمة تشغيل) متوافقة مع عدة لغات مصممة لإنتاج رسوميات الحاسب ثنائية الأبعاد وثلاثية الأبعاد. تحوي الواجهة أكثر من 250 استدعاء دالي مختلف يمكن استخدامها لرسم مناظر ثلاثية الأبعاد معقدة باستخدام مكوّنات هندسيّة بسيطة كنقط والخطوط والمضلّعات. في عالم رسومات الحاسب تعرف هذه المكوّنات باسم البدائيَات. تم تطوير الأوبن جي إل في البدء من قبل شركة سيليكون غرافيكس ثم حققت شيوعا وانتشارا كبيرين في ألعاب الفيديو حيث تتنافس مع دايركت ثري دي على منصات مايكروسوفت ويندوز. يستخدم أوبن جي إل بشكل واسع في تطبيفات الكاد والواقع الافتراضي، والتمثيل المرئي العلمي والتمثيل المرئي للمعلومات، ومحاكاة الطيران وفي تطبقيات متنوّعة أخرى لها صلة بميدان رسومات الحاسوب.

تصميم المكتبة[عدل]

هيكلة ماسورة الرسومات الخاصّة بالمكتبة

تم تصميم المكتبة على أساس محورين آساسييّن هما:

  • توفير واجهة موحّدة وسهلة للوصول إلى قدرات المكوّنات الصلبة في الرسومات وخاصّة الثلاثيّة الأبعاد منها.
  • إخفاء الاختلافات المتواجدة بين شتّى أنواع المنصّات الصلبة عبر إجبار كلّ الإنجازات المتوافقة على دعم جميع الميّزات المعرّفة في المواصفات.

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

مثال عملي[عدل]

لقطة شاشة للتطبيق مع المربّع الأبيض

مثال بسيط لرسم مربّع أبيض على الشاشة باستخدام لغة السي، نقوم أوّلا بارسال أمر مسح الشاشة (glClear):

glClear(GL_COLOR_BUFFER_BIT);

ثمّ نحدّد زاوية الرؤية وكيفيّة الإسقاط داخل الماسورة:

glMatrixMode(GL_PROJECTION);                    /* أمر إعلام بوجوب تغيير مصفوفة الإسقاط */
glLoadIdentity();                                 /* إدخال مصفوصة، هذا الأمر يرسل ببساطة مصفوفة وحدة */
glOrtho(.0, 1.0,.0, 1.0, -1.0, 1.0);             /* تحديد معيّن الإسقاط */

الآن بعد مسح الشاشة وتحديد أوامر الإسقاط يمكننا البدء في الرسم على المعيّن الجديد. سنقوم برسم بدائيّة تتمثّل في مربّع. للقيام بهذا نحتاج لإرسال أوامر تحدّد إحداثيات النقط الأربعة المشكّلة للمربّع:

glColor3f(1.0f, 1.0f, 1.0f);                       /* تحديد لون الرسم، في هذه الحالة أبيض */
 
glBegin(GL_POLYGON);                               /* تحديد نوع البدائيّة التّي نريد رسمها، هنا حدّدنا النوع كمضلّع */
		glVertex3f(0.25f, 0.25f,.0f);       /* إحداثيّات النقطة الأولى للمربّع */
		glVertex3f(0.75f, 0.25f,.0f);       /* إحداثيّات النقطة الثانية للمربّع */
		glVertex3f(0.75f, 0.75f,.0f);       /* إحداثيّات النقطة الثالثة للمربّع */
		glVertex3f(0.25f, 0.75f,.0f);       /* إحداثيّات النقطة الرابعة للمربّع */
glEnd();                                           /* إمر إخطار بنهاية سرد الإحداثيّات للمضلّع المطلوب */
 
glFlush();                                         /* إمر بتنفيذ كلّ الأوامر والرسم على الشاشة */

إن واجهة الـ OpenGL تتألف من أكثر من 250 وظيفة مختلفة والتي يمكن استخدامها لرسم مشاهد معقدة ثلاثية الأبعاد. لقد طورت هذه اللغة بواسطة شركة Silicon Graphics في عام 1992 والتي تستخدم ضمن الـ CAD والواقع الافتراضي والتصور العلمي.. إلخ. كما أنها تستخدم في ألعاب الفيديو حيث أنها تتنافس مع Direct3D على منصات مايكروسوفت ويندوز.

مواصفات الـ OpenGL[عدل]

في أبسط مستوي للـ OpenGL هي عبارة عن مواصفات، بمعنى آخر وبسيط هي عبارة عن مستند يصف مجموعة من المهام الدقيقة والسلوكيات التي يجب أن تؤديه.

مثال بسيط: إن أي لعبة تستخدم جرافيكس ضخمة تحتاج لوصول مباشر إلى كرت الشاشة فهذا الوصول يتم عن طريق استخدام الـ OpenGL والتي يستخدم منصة API بدلا من الـ Virtual Machine كـ NET. Framework

تعمل هذه الواجهة كحلقة وصل بين أي برنامج وبين مجموعة من المزايا المقدمة في النظام... وهي مقسمة إلى عدة أقسام منها على سبيل المثال Direct3D وهذه المكتبة خاصة بعملية التواصل بين البرنامج والمسرع الرسومي ومنها أيضا DirectSound وهذه خاصة بعمليات التواصل بين البرنامج وبطاقة الصوت...

OpenGL هي مكتبة أخرى طورتها شركة SGI وحاليا تطورها شركة Sun... تمكنك من التواصل مع المسرع الرسومي بشكل أسهل وهي تنافس مكتبة Direct3D والتي تطورها مايكروسوفت

إذا أردنا مثالا بسيطا عن مهمة هذه المكتبة

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

أما حين استخدام واجهة Direct3D فالذي عليك فعله أولا هو استدعاء أوامر المكتبة وستحتاج هنا لمكتبة Direct3D فقط من مجموعة مكتبات DirectX ثم تأمرها برسم المضلعات (وهي أشكال ثلاثية الأضلاع في عالم ثلاثي الأبعاد تكون الأساس الخاص بكل الرسومات الثلاثية الأبعاد) وتحدد نقاط كل مضلع الثلاث في الفضاء الثلاثي وتحدد لونه ونوعه والكثير من مزاياه مثل المواد وغيرها ثم تنتهي لتتولى المكتبة بعد ذلك عملية مخاطبة المسرع الرسومي ورسم كل الأمور بشكل أسهل بكثير مما لو قمت برسم كل شي يدويا

طبعا قد تتسائل أولا تتطلب هذه العملية قوة معالجة إضافية لتحويل البيانات ؟؟؟

سنقول لك لا لأن المسرع الرسومي يأتي بدعم مسبق لهذه التعليمات... لهذا ترى المسرعات الحديثة تدعم مكتبة DirectX 9 بينما القديمة DirectX 8.1 والتي قبلها 8 و 7.1 و 7 وهكذا... يقوم المعالج الرسومي تلقائيا برسم هذه الأوامر أي أنه أصبح يفهم أوامر الـ DirectX والـ OpenGL دون الحاجة للترجمة

ولكن عيب هذه الطريقة انك بحاجة لتطوير المسرع كلما ظهرت نسخة جديدة من DirectX أو OpenGL وكل نسخة جديدة تتضمن مزايا أكثر وقوة أكبر وتحسينات إضافية... وعلى فكرة لإإن سرعة تطور DirectX أكبر من سرعة تطور OpenGL ولكن OpenGL أغنى من DirectX ولكنه أصعب أيضا... لهذا يستخدم OpenGL في البرامج الرسومية المحترفة وتوجد نسخ خاصة من البطاقات الرسومية تقدم دعما أقوى لهذه الواجهة

نص الصفحة.[1]