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

برنامجك الأول : Opengl + Glut

مثبّترائج
بدأه Abdullah.Alshammeri في 3 أغسطس 2008 · 27 رد · 27,427 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم .

الهدف :

* انشاء تطبيقك الأول باستخدام OpenGL و GLUT مع CodeBlocks , أو Visual Cpp .

* الشرح سيكون تحت نظام الويندوز .

المتطلبات :

* فهم للسي بلس .. + عمل تطبيقات سابقة باستخدام Visual Cpp أو CodeBlocks ( انظر الى قسم السي اذا كنت لا تعرف ) .

* معلومات عامة حول OpenGL و المكتبة GLUT ( سيتم اضافة موضوع حول ذلك مستقبلا ان شاء الله . )

الملفات المطلوبة :

* اذا كنت تريد العمل مع CodeBlocks ( والذي يأتي معه في الغالب المترجم MinGW .. فقم بتحميل البرنامج من هذا الموقع :

http://www.codeblocks.org/downloads/binaries

وصلة مباشرة :

http://downloads.sourceforge.net/codeblock...mingw-setup.exe

ملاحظة : قم بتحميل الملف الذي يأيتي معه المترجم MinGW .. أي الملف الذي حجمه كبير ( 18 ميقا تقريبا ) .

* اذا كنت تريد العمل مع Visual Cpp 2005 أو Visual Cpp 2008 أو حتى 2003 >> فيجب أن تملك نسخة منه ( راجع موقع microsoft ).. (علما بأنه تم التجريب على professional و ليس express .. )

* يجب تحميل هذه الملفات :

http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip

التثبيت :

1- OpenGL تأتي تلقائيا مع أي مترجم .

2- لتثبيت المكتبة GLUT .. يجب اخبار المترجم بموقعها .. ويوجد عدة طرق .. منها :

---- اذا كنت تعمل على CodeBlocks :

* انسخ الملف glut32.dll الى مجرد النظام C:Windows/system32 .

* انسخ الملف glut.h الى مجلد المكتبات .. ستجده هنا :

C:\Program Files\CodeBlocks\MinGW\include\GL

طبعا حسب المكان الذي ثبت فيه المترجم ... ممكن يكون على القرص D ,,

* انسخ الملف glut32.lib الى هذا المكان :

C:\Program Files\CodeBlocks\MinGW\lib

---- اذا كنت تعمل على Visual Cpp 2008 :

* انسخ الملف glut32.dll الى مجرد النظام C:Windows/system32 .

* انسخ الملف glut.h الى مجلد المكتبات .. ستجده هنا :

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl

طبعا حسب المكان الذي ثبت فيه المترجم ... ممكن يكون على القرص D ,,

* انسخ الملف glut32.lib الى هذا المكان :

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib

---- اذا كنت تعمل على Visual Cpp 2005 :

* انسخ الملف glut32.dll الى مجرد النظام C:Windows/system32 .

* انسخ الملف glut.h الى مجلد المكتبات .. ستجده هنا :

C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\gl

طبعا حسب المكان الذي ثبت فيه المترجم ... ممكن يكون على القرص D ,,

* انسخ الملف glut32.lib الى هذا المكان :

C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib

برنامجك الأول :

---اذا كنت تعمل على Visual Cpp 2008 أو 2005 أو حتى 2003 :

* طبق الخطوات التالية .. بعد تشغيل البرنامج :

post-42837-1217792247_thumb.jpg

post-42837-1217792253_thumb.jpg

post-42837-1217792259_thumb.jpg

post-42837-1217792272_thumb.jpg

---اذا كنت تعمل على CodeBlocks :

* طبق الخطوات التالية :

post-42837-1217792351_thumb.jpg

post-42837-1217792358_thumb.jpg

post-42837-1217792363_thumb.jpg

post-42837-1217792371_thumb.jpg

post-42837-1217792381_thumb.jpg

بالنسبة لهذه النافذة .. قم باضافة مكتبة بالضغط على add .. ثم اضف المكتبات التالية :

opengl32

glu32

winmm

gdi32

ُم اضف المكتبة glut32.lib .. والتي ستجدها في المكان الذي وضعتها فيه قبل قليل .. ( انظر التثبيت ) .. انظر الى الصورة .. لتجد مثال على ذلك .

وأخيرا :

post-42837-1217792387_thumb.jpg

ملاحظة :

هذا هو الكود المستخدم في المثال .. اذا كنت متعاجز أن تكتبه :) :

  1.  
  2. #include <windows.h>
  3. #include <GL/gl.h>
  4. #include <GL/glut.h>
  5. void display(void) {
  6. glClear(GL_COLOR_BUFFER_BIT);
  7. glLoadIdentity();
  8. glRectf(-0.5,-0.5,0.5,0.5);
  9. glutSwapBuffers();
  10. }
  11.  
  12. void idle(void) {
  13. glutPostRedisplay();
  14. }
  15. int main(int argc,char **argv) {
  16. glutInit(&argc,argv);
  17. glutInitWindowSize(512,512);
  18. glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
  19. glutCreateWindow("OpenGL GLUT ");
  20. glutDisplayFunc(display);
  21. glutIdleFunc(idle);
  22. glutMainLoop();
  23.  
  24. return 0;
  25. }
  26.  
  27.  
  28.  
  29.  

تم تعديل هذه المشاركة بواسطة الشمري في 4 أغسطس 2008 في 00:00

2

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#2

الله ينور يا معلم ...

كنت أنوي أن أعمل شروحاً لمكتبة glut ...

لكن جيد أنك سبقتني لهذا الأمر لأنني كنت سأشرح من نظام لينوكس و ليس ويندوز ...

و بما أنني لا أعرف كيفية إستخدام نظام ويندوز فإني أسأل ... هل بعد عمل نسخة exe من أي برنامج و فيه مكتبة glut .. هل أحتاج إلى وضع ملف glut32.dll في ملفات النظام حتى يعمل عند المستخدم أم أن هذا للمبرمج فقط ؟؟

#3

نعم .. تحتاج لأن تضيف هذا مع الملف التنفيذي .. الا اذا كان يملك نسخة من هذه المكتبة .. وهذه النسخة موجودة في مسار النظام مثل system32 .

وأتمنى منك أخي اضافة دروس لكيفية تنفيذ برنامجنا الأول مع Linux .. بل وكيفية تثبيت حتى ال CodeBlocks.. أنا أعمل على ubuntu ..ولا أفقه فيه شيء .. ويهمني معرفة ذلك .. فقط لاكمال المحرك الذري .. ليعمل على Linux .

شكرا لمرورك .

تم تعديل هذه المشاركة بواسطة الشمري في 4 أغسطس 2008 في 00:01

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#4

إن شاء الله .. كنت أفكر في عمل درس عن البرمجة في لينوكس بشكل عام ... و بلغة سي++ بشكل خاص ...

و لهذا أضفت هذا الموضوع

/index.ph...=167889&hl=

هل تريد الدروس فيديو أم نصية ؟؟

#5

نصية مع بعض الصور(عند الحاجة ) تكفي .. الا اذا كان الفيديو اسهل بالنسبة لك ..

شكرا مرة أخرى ,,

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#6

:lol: بإختصار أقول : إقتصرت علينا الوقت !

logo.gif
#7

نحن نتعلم openGL قصد عمل أعمالنا على لينكس لذلك في نظري البسيطة Glut شيء رائع و هو الاهم

لكن سمعت وجود مكتبة اضافية للـ openGL مماثلة للـ Glut و هي ابسط واسهل و اذا لم اكن مخطأ هي Glfw

لكني لا احب كثرة المكتبات و احب مبدأ عدم الرجوع بالعجلة !!

كذلك لي سؤال اخر : هل مكتبة mesa الموجود على لينكس هي Glut ؟ (أضنها كذلك حسب ما رأيت)

و هل هذه المكتبات تختلفة في سرعة و امتيازات العرض ؟

logo.gif
#8

مكتبة glfw مثل glut .. ولكنها تتميز عنها بأنها أكثر تحديثا .. كما أن طريقتها في استخدام ال loop أفضل بكثير من glut ..كما أنها تدعم threading .. طبعا على جميع الانظمة المعروفة ..

لو كنت أتوقع وجود اشخاص يستخدمون هذه المكتبة .. لاعتمتدتها .. في جميع الامثلة والدروس .. فهي بحق رائعة و جميلة .

أما المكتبة MESA فهي لجميع الانظمة وليست فقط للlinux .. هي عبارة عن مكتبة مثل opengl تماما ..

حيث opengl عبارة عن مواصفات .. لها عدة implementation .. بعضها يستغل قدرات كرت الشاشة .. وبعضها لا .

\

ميزتها انها تعمل على جميع كروت الشاشة .. فنوع الrender هو software .. ولكن عيبها طبعا أنها لا تستغل قدرات الشاشة .. وباتالي فهي بطيئة .. و تم تطويرها لتكون البديل للimplementation التي تأتي مع كروت الشاشة .. والتي في اغلبها لا تدعم نظام Linux .. او شيء من هالقبيل ..

باختصار MESA هي OPENGL .. ولكن تم تغيير الاسم .. من أجل الحقوق .. حقوق شركة SGI التي تمنح رخصة التطوير لاي شركة تريد عمل implementation لها ..

الكلام كثير حول هذه الأمور .. ونتركها .. لمواضيع قادمة يتم الاعداد لها ان شاء الله .

تم تعديل هذه المشاركة بواسطة الشمري في 8 أغسطس 2008 في 21:09

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#9

يا اخويا الشمري انا توقفت على برمجة ditectx من فترة لانها لا تتبع اسلوب عدم الرجوع بالعجلة

و انا ما أعرفة على opengl انا ليست كذلك لذلك عقدت العزم انا ألقى عليها بعض الاضواء

لكنك انت تطفا و تشغل في هذه الاضواء بارك الله فيك

لذلك لم تحدد لنا الركيزة الاساسية (المكتبات) في عمل برامج بـ opengl على جميع الانظمة

:wacko:

logo.gif
#10

glut + opengl

ستفيان بالغرض .. ( في مجال الجرافكس ) .

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#11

:wink: جد مشكور اخويا , هل بأمكانك شرح الكود السابق سطرا سطرا او كودا كودا

و ذلك ترسيخا للمفاهيم في اذهاننا

logo.gif
#12

انظر المواضيع المثبتة .. ستجد شرح كامل ان شاء الله .

هذا الموضوع مخصص للبداية فقط .

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#13

جربت الشرح السابق ... و لكن هناك مشكلة

كل شئ يعمل على أكمل وجه في لينوكس في مكتبة glut

لكن عندما جربت نفس الكود على ويندوز في CodeBlocks وجدت شئ عجيب

وجدت أنه لا يمكن وضع إكساء فوق إكساء آخر ... يظهر فقط الإكساء الذي وضعته أولاً و إذا وضعت إكساء آخر فوقه لا يظهر ...

مع أني نقلت الكود كما هو نسخ و لصق ...

#14

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

اخي الكريم اشكرك على جهودك ....

اذا تسمح لي بسؤال ..... انا استخدم برنامج الإيكليبس واردت ان اضيف مكتبة openGL ...

والطريقة التي استخدمها هي :

بعد انشاء البروجكت وانشاء السورس فايل اقوم بإضافة glut32, glu32, opengl32, gdi32 الى libraries ....

لكن يوجد اخطاء لا اعلم لماذا؟ هل طريقة اضافتي للمكتبات خاطئه ؟؟؟...

الكود:

#include <windows.h>

#include<gl/Gl.h>

#include<gl/glu.h>

#include<GL/glut.h>

void myInit()

{

glClearColor(1.0,1.0,1.0,0.0);

glColor3f(0.0f,0.0f,0.0f);

glPointSize(4.0);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluOrtho2D( 0 , 640.0 , 0 , 480.0 );

}

void myDisplay()

{

glClear(GL_COLOR_BUFFER_BIT);

glBegin(GL_POINTS);

glVertex2i(100,50);

glVertex2i(100,130);

glVertex2i(150,130);

glEnd();

glFlush();

}

void main(int argc, char** argv)

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

glutInitWindowSize(640, 480);

glutInitWindowPosition(100, 150);

glutCreateWindow(“My First Program”);

glutDisplayFunc(myDisplay);

myInit();

glutMainLoop();

}

سؤال اخر : هل يوجد كومبايلر يدعم مكتبة openGL بدون ماأعمل لها اضافه ؟؟ هل هو سهل الإستخدام؟؟

شكرآ .... بإنتظاركم

#15

Eclipse عبارة عن واجهة فقط IDE ، في الغالب أن المترجم المستخدم هو GCC ( في الويندوز نستخدم MinGW ) لذلك من المفترض أنه سيعمل البرنامج بنفس الطريقة .

يجب في البداية نسخ المكتبة glut32 الى مجلد المكتبات داخل MinGW ، ثم اضافتها من داخل Eclipse .

لو تفرّغت ، ممكن أعمل موضوع للربط بين Eclipse و OpenGL Libraries .

اقتباس
سؤال اخر : هل يوجد كومبايلر يدعم مكتبة openGL بدون ماأعمل لها اضافه ؟؟ هل هو سهل الإستخدام؟؟

اذا استخدمت WIn32 APIs ، لاتحتاجي لمكتبة خارجية ( في الويندوز ) .

ولكن باستخدام GLUT ، لابد من اضافة المكتبة .

OpenGL كمكتبة تأتي مع أي مترجم .

ولكن لربطها بالنظام نحتاج طريقة أسهل من WIn32 APIs وتعمل على أكثر من نظام ، لذلك نستخدم GLUT .

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#16

تم الانتهاء من تطبيق هذا الدرس و ظهرت لي نافذة مربعة مرسوم فيها مربع

شكرا يا الغالي وجاري الانتقال للدرس الثاني

1
#17

بارك الله فيك أخي

صرت قادرا على عمل (مربع , مثلث , مضلع , نقط , مستقيمات)

الجزائر قلبي وغزة نبضه

2522zn0.png
#18

للترجمة على لينوكس

g++ src.c++ -lglut -lGLU -lGL -o exe-file

name : mohamedyosry

#19

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

لو سمحت انا ما قدرات اضيف المكتبه على جهازي لان الصورة الموضحه في المووضوع بختلف عن النوع الي عندي

وانا مش قادره افهم الامور مزبوط

بتجاكم اساعدوني

#20

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

انا نزلت SDK بس gl الي جوها كانت ملفات ضاربه .. كيف ممكن حل هاي المشكله

بترجااااااكم اجبوني في اسرع وقت

#21

اذا متصير زحمه تستطيع شرح هذه الخطوات بواسطه لغه java

#22

جافا لا تستخدم GLUT ، لكن مكتبة ثانية أجمل ، كتبت دروس أساسية قبل سنين ، يمكن أن تبدأ منها :

/index.php?showtopic=165722

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#23

شكرا , الموضوع مفيد جدا ,, لكن في اخطاء في الكود لان ما اشتغل عندي

#24

السلام عليكم

اخوتي الاعزاء .. شكرا على الموضوع المفيد والمهم ...

أحتاج لمساعدتكم إن تفضلتم علي بالاجابة ...

فأنا أبحث عن كود glut يقوم برسم اشارة " E " لكن حجمها أكبر قليلا ,, وبالضغط على حرف " u " على الكيبورد يحدث دوران للحرف بحيث تكون الجهه المفتوحه للأعلى ..

وبالضغط على الحرف " d " يحدث دوران للاشارة بحيث تكون الجهه المفتوحة للأسفل .. وبالضغط على الحرف " L " يحدث دوران للاشارة وتصبح الجهه المفتوحه باتجاه اليسار ...

وبالضغط على الحرف " O " ترجع الاشارة الى شكلها الاصلي وتصبح الجهه المفتوحه باتجاه اليمين .

وبالضغط على " x " يتم تكبير الاشارة ... وبالضغط على " n " يتم تصغير الاشارة .

كما وانه بالضغط على " R " يتم تغيير اللون الى الاحمر .

وبالضغط على " G " يتم تغيير اللون الى الاخضر .

وبالضغط على " B " يتم تغيير اللون الى الازرق .

#25

مرحباً أختي سوزان

اخونا الشمّري لم يعد يفتح حسابه في المنتدى لا أعرف لماذا

يمكننك أن تسألي شخص آخر وشكراً

إذا كانت المشاركة مفيدة قيمها وأضفني صديقاً

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