هايبر أكتيف

الارشيف العربي للمعرفة
الصفحة الرئيسيةتواصل معناشروط الإستخداممن نحن

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

مكتبة اوبن جل

التقنية
2023-02-04 20:06:56 تم النشر بتاريخ

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

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

يدعم كل اصدار من  المكتبة انواع بطاقات الرسومات الجديدة عن طريق سلسلة. غالبًا ما يعمل الأشخاص على تطويرها مقابل تحقيق أقصى درجة انسجام في المعدات.[1] في هذا الدرس سنوفر لك مجموعة من طرق توصيل وربط  مكتبه اوبن جل. لكي تتمكن من الاستمرار في دروس وأجزاء الدورة اللاحقة.

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

 

 


 

 متطلبات مكتبة اوبن جل

الان وبعد ان تتحقق من وجود المتطلبات السابقة سيسهل عليك البدء في ربط مكتبات الرسم عمومًا أو حتى أي مكتبات أخرى. وعلى سبيل المثال فإن العمل تحت إطار مايكروسوفت يتطلب منك الإلمام ببعض  المسائل لكي تبدو البيئة مألوفة لديك.  


تحميل مصادر المنصة


سنحتاج إلى تحميل بعض مصادر مكتبة اوبن جل ولكن قبل ذلك يتعين على المطورين تنصيب نسخة من محرر  فيجوال ستوديو من مايكروسوفت. لا يتطلب منك الأمر سوى القيام بربط مكتبتين الأولى باسم 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;
}

بعد أن قمنا بعملية الربط ستظهر لنا النتيجة كما في الصورة التالية:

نتيجة تنفيذ برنامج openGL


ربط مصادر glew


تتطلب عملية ربط مكتبة glew نفس الخطوات السابقة مع بعض الإختلافات في إحالة الامتدادات , ,ومع ذلك فإن اختيار نظام 32 بت أو 64 بت سيحدد معمارية المشروع طوال عملية البرمجة. ولا ننسى أن هناك ربط تلقائي يتوجب علينا تفعيلها في خصائص input.

glew32.lib

       

المصادر
  1. [1]^ OpenGL.
  2. [2]^GLFW Documentation binaries.
  3. [3]^GLFW Documentation.


تمت الكتابة بواسطة : محمد

آخر تحديث : لم تخضع لتحديثات بعد