مكتبة اوبن جل : دورة OpenGL لغة c++ الدرس الأول

مكتبة اوبن جل هي بالأساس واجهة برمجة تطبيقات الرسم OpenGL.[1] حيث انها توفر لنا مجموعة كبيرة من الأدوات والوظائف والمتغيرات التي تساعدنا في معالجة الرسومات ثنائيه وثلاثيه الابعاد.[1]توفر مكتبة اوبن جل مجموعه من الوظائف المعدة والمجهزة مسبقًا في بطاقات الرسم القياسية في العالم.[1] يمكن الوصول إليها من خلال لغات منخفضة المستوى مثل لغة جافا او سي او غيرها .
وبالتالي يتم استخدام مكتبة اوبن جل في الحصول على مادة غنية من معادلات الرسم الرياضية والفيزيائية المنسجمة أو حتى في تصميم الواجهات البسيطة.
يدعم كل اصدار من المكتبة انواع بطاقات الرسومات الجديدة عن طريق سلسلة. غالبًا ما يعمل الأشخاص على تطويرها مقابل تحقيق أقصى درجة انسجام في المعدات.[1] في هذا الدرس سنوفر لك مجموعة من طرق توصيل وربط مكتبه اوبن جل. لكي تتمكن من الاستمرار في دروس وأجزاء الدورة اللاحقة.
وعادة ما يتطلب ذلك منك حاسوب بمواصفات متوسطة ولا يهم نوع بطاقة العرض حيث تستطيع العمل على بطاقة مدمجة. بالتالي سنركز فقط على الأساسيات وليس على كمية الإطارات والبكسل في الثانية الواحدة.
متطلبات مكتبة اوبن جل
- حاسوب قياسي (سطح مكتب لابتوب).
- بطاقة عرض (متوافقة مع نظام التشغيل)
- محرر Visual Studio.
- مهارات أساسية في لغات البرمجة.
الان وبعد ان تتحقق من وجود المتطلبات السابقة سيسهل عليك البدء في ربط مكتبات الرسم عمومًا أو حتى أي مكتبات أخرى. وعلى سبيل المثال فإن العمل تحت إطار مايكروسوفت يتطلب منك الإلمام ببعض المسائل لكي تبدو البيئة مألوفة لديك.
تحميل مصادر المنصة
سنحتاج إلى تحميل بعض مصادر مكتبة اوبن جل ولكن قبل ذلك يتعين على المطورين تنصيب نسخة من محرر فيجوال ستوديو من مايكروسوفت. لا يتطلب منك الأمر سوى القيام بربط مكتبتين الأولى باسم glfw والثانيه باسم glew.
وبعد أن قمنا بتحميل المكتبتين سنعمل على تنصيب جميع الملفات ونقلهم إلى ملف بمكان آمن , نفضل انشاء ملف في القرص الصلب c بعنوان GL.
الآن نقم بفتح برنامج Visual Studio ومن ثم نضيف مشروع جديد من فئة Console App. بالتالي لا بد من التنويه بأننا نعمل على نسخة 2022 من visual studio تمامًا مثل الصورة التالية:
لا تنسى الاستمرار في صفحة التكوين والانتهاء من اضافة ملفات المشروع ,وبعد فتح المشروع يتوجب علينا اضافة ملف لإجراء عملية الفحص وتكوين بيئة عمل اللغة ولذلك فإننا سنقوم باضافة صفحة main.cpp تماما ليصبح المشروع كما في الصورة التالية:
ربط مكتبة اوبن جل glfw
لكي يتم ربط مكتبه glfw يتعين علينا الوصول إلى خصائص المشروع , وذلك لكي يتم توصيل المكتبة باعتبارها مصادر برمجية خارجية , يمكنك الوصول إلى الخصائص من تمامًا مثل الصورة التالية:
عند ظهور شاشة الخصائص نختار c/c++ ثم General و نذهب إلى جدول الصفوف في المنتصف. ومن ثم نختار Edit من حقل Additional Include Directories , لقد قمنا بتحديد الخطوات بخط أصفر لتمييز الألوان.
عند ظهور صندوق صغير بنفس الطريقه السابقه اضغط على الحقل. ومن ثم نذهب الى مصادر مكتبه اوبن جل التي قمت بنسخها القرص الصلب سي وبالتالي فان امتداد الرابط سيصبح كما يلي :
C:GLglfw-3.3.8.bin.WIN32glfw-3.3.8.bin.WIN32includeGLFW
يمكنك تغيير المعمارية من 32 بت إلى 64 بت أو بالعكس , ولكن يجب الإشارة إلى المعمارية التي قمت باختيارها في الخطوة التي سنقوم بشرحها تاليًا. ضع باعتبارك أن مجرد خطأ بسيط من الممكن أن يضعك في مأزق قد يتجاوز ساعات من تشخيص المشكلة. سنعتمد في الشيفرة الخاصة بنا اختيار معمارية 32 بت.
ربط ملفات المكتبة lib
إن ما قمنا به سابقا ما هو سوى ربط ملفات includes التي سيتم استدعاؤها أثناء بناء الشيفرة الخاصة بنا. لكن ذلك الأمر لا يكفي بسبب أننا نريد الإشارة إلى مصادر lib من مكتبة اوبن جل. وبنفس الطريقة السابقة يمكنك إتمام عملية الربط عن طريق Additional Library Directories كما في الصورة التالية:
إن النسخة المطابقة للمحرر الخاص بنا هي visual studio 2022 وبالتالي , فإن الامتداد الخاص بملفات lib يصبح تماما مايلي:
C:GLglfw-3.3.8.bin.WIN32glfw-3.3.8.bin.WIN32lib-vc2022
وأما في حال كان لديك نسخة أخرى من المحرر فيرجى البحث عنها في امتداد المكتبة حيث أنها توفر أكثر من إصدار ملفات lib. يتبقى لدينا الآن ربط ملفات الاتصال بالمكتبة حيث يتم الاشارة بها من خلال input الموجودة في linker من الخصائص , تمامًا كما في الصورة التالية:
بالتالي , وعند ظهور صندوق الربط سنضع ملفات الاشارة التالية:
glfw3.lib opengl32.lib
الان نقوم بحفظ التعديلات ونخرج من الصندوق مع اضافة كود الفحص التالي :
#include <GLFW/glfw3.h> int main(void) { GLFWwindow*window; /* Initialize the library */ if (!glfwInit()) return -1; /* Create a windowed mode window and its OpenGL context */ window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); if (!window) { glfwTerminate(); return -1; } /* Make the window's context current */ glfwMakeContextCurrent(window); /* Loop until the user closes the window */ while (!glfwWindowShouldClose(window)) { /* Render here */ glClear(GL_COLOR_BUFFER_BIT); glClearColor(1.0, 1.0, 0.5, 1.0); /* Swap front and back buffers */ glfwSwapBuffers(window); /* Poll for and process events */ glfwPollEvents(); } glfwTerminate(); return 0; }
بعد أن قمنا بعملية الربط ستظهر لنا النتيجة كما في الصورة التالية:
ربط مصادر glew
تتطلب عملية ربط مكتبة glew نفس الخطوات السابقة مع بعض الإختلافات في إحالة الامتدادات , ,ومع ذلك فإن اختيار نظام 32 بت أو 64 بت سيحدد معمارية المشروع طوال عملية البرمجة. ولا ننسى أن هناك ربط تلقائي يتوجب علينا تفعيلها في خصائص input.
glew32.lib
تمت الكتابة بواسطة : محمد
آخر تحديث : لم تخضع لتحديثات بعد