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

مثال عملي

مثال بسيط لرسم مربّع أبيض على الشاشة باستخدام لغة السي، نقوم أوّلا بإرسال أمر مسح الشاشة (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 والتي يستخدم منصة API بدلا من الـ Virtual Machine كـ NET. Framework
تعمل هذه الواجهة كحلقة وصل بين أي برنامج وبين مجموعة من المزايا المقدمة في النظام... وهي مقسمة إلى عدة أقسام منها على سبيل المثال Direct3D وهذه المكتبة خاصة بعملية التواصل بين البرنامج والمسرع الرسومي ومنها أيضا DirectSound وهذه خاصة بعمليات التواصل بين البرنامج وبطاقة الصوت...
OpenGL هي مكتبة أخرى طورتها شركة SGI وحاليا تطورها مجموعة  Khronos Group... تمكنك من التواصل مع المسرع الرسومي بشكل أسهل وهي تنافس مكتبة Direct3D والتي تطورها مايكروسوفت
إذا أردنا مثالا بسيطا عن مهمة هذه المكتبة
تصور أنك تريد رسم مكعب مثلا... 
في الحالة العادية ودون استخدام إحدى هذه المكتبات فإنك ستحتاج لمخاطبة المسرع الرسومي بشكل مباشر بلغة صعبة جدا وتعقيدات كثيرة مما يزيد من صعوبة البرمجة ويزيد من تكاليفها أيضا...
أما حين استخدام واجهة Direct3D فالذي عليك فعله أولا هو استدعاء أوامر المكتبة وستحتاج هنا لمكتبة Direct3D فقط من مجموعة مكتبات DirectX 
ثم تأمرها برسم المضلعات (وهي أشكال ثلاثية الأضلاع في عالم ثلاثي الأبعاد تكون الأساس الخاص بكل الرسومات الثلاثية الأبعاد) وتحدد نقاط كل مضلع الثلاث في الفضاء الثلاثي وتحدد لونه ونوعه والكثير من مزاياه مثل المواد وغيرها ثم تنتهي لتتولى المكتبة بعد ذلك عملية مخاطبة المسرع الرسومي ورسم كل الأمور بشكل أسهل بكثير مما لو قمت برسم كل شي يدويا
طبعا قد تتساءل أولا تتطلب هذه العملية قوة معالجة إضافية لتحويل البيانات ؟؟؟
سنقول لك لا لأن المسرع الرسومي يأتي بدعم مسبق لهذه التعليمات... لهذا ترى المسرعات الحديثة تدعم مكتبة DirectX 9 بينما القديمة DirectX 8.1 والتي قبلها 8 و7.1 و7 وهكذا... 
يقوم المعالج الرسومي تلقائيا برسم هذه الأوامر أي أنه أصبح يفهم أوامر الـ DirectX والـ OpenGL دون الحاجة للترجمة
ولكن عيب هذه الطريقة انك بحاجة لتطوير المسرع كلما ظهرت نسخة جديدة من DirectX أو OpenGL وكل نسخة جديدة تتضمن مزايا أكثر وقوة أكبر وتحسينات إضافية... وعلى فكرة لأن سرعة تطور DirectX أكبر من سرعة تطور OpenGL ولكن OpenGL أغنى من DirectX ولكنه أصعب أيضا... لهذا يستخدم OpenGL في البرامج الرسومية المحترفة وتوجد نسخ خاصة من البطاقات الرسومية تقدم دعما أقوى لهذه الواجهة.