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

حفظ نتائج الرسم بopengl

بدأه hbate_allah في 15 يناير 2010 · 4 رد · 896 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي برنامج يقوم بالرسم ب opengl و هو يعمل

لكنني اريد ان اقوم بحفظ النتتج اي الرسومات التي تظهر في نافذة opengl على شكل صورة JPG او BMP او اي نوع اخر

لكنني لم اعرف كيف ابدا ذلك

تم تعديل هذه المشاركة بواسطة hbate_allah في 15 يناير 2010 في 21:43

#2

بسم الله الرحمن الرحيم

أرجوا أن تسامحني يا أخي لأني لم أضع لك شرح مباشر :ohmy: :ohmy: :ohmy:

إن التعامل مع الصور لن يكون بالشكل المباشر

يعني لو أنك أردت الإحتفاظ الصورة سيكون كالتالي:

إستخراج البيانات من الذكرة العميل ram أو من ذاكرة الإيطار framebuufer الموجودة في الخادم vram ( هذا في مثالك )

معالجة هذه البيانات إن إحتاج الأمر ثم تخزينها على هيئات مختلفة كهيئة tag أو jpg أو ....

فإذا أردت النسخ صوة من الشاشة ستستعمل دالة glReadPixels لأخذ البكسلات من الشاشة ( البيانات ستأخذ طريق طويل من ذاكرة الإيطار نحو ذاكرة النظام ram أي نحو مصفوفتك أو ما شابه ) .

لذى إقراء هذا الدرس جيدا

ثم ستحتاج إلى ضغط الصور و التعامل معها بإحترافية راجع المحور Textures Compressées من هذا الكتاب

أتمنى لك التوفيق إن شاء الله

تم تعديل هذه المشاركة بواسطة 3ds max2010 في 16 يناير 2010 في 01:28

1

تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

future.jpg
#3

وعليكم السلام ،

سؤال جيد ،

الفكرة هي بقراءة محتوى Color Buffer ( سطح الألوان في OpenGL ) ، وهو عبارة عن مصفوفة من البايتات مرتبة بطريقة معينة . بعد قراءة تلك الباياتات وتخزينها في مصفوفة مثلاً ، تنتهي مهمّة OpenGL ، وننتقل إلى عملية كتابة هذه الصورة كملف BMP - وهو أسهل ملف يمكن انشاءه - بدون مكتبات مساعدة ، أو أن تستخدم مكتبة خارجية مثل DevIL لتخزين الصورة بأي نسق تريد .

الدوال التي تحتاج أن تقرأ عنها /

glReadPixels

glReadBuffer

كتابة صورة من نوع BMP باستخدام المكتبة DevIL :

http://openil.sourceforge.net/

أو يمكنك القراءة عن هيكلة الملف BMP ، اذا أردت كتابة BMP Writer خاص بك .

سأحاول أن أفصّل أكثر في الموضوع ان تفرّغت ، ولعل الاخوة الاعضاء يفيدوك بشكل أكبر ،

اضافة :

يبدو أني كتبت الرد بالتزامن مع الاخ 3ds max ، :D ،

تم تعديل هذه المشاركة بواسطة الشمري في 16 يناير 2010 في 01:30

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#4

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

ومن ثم احفظها بجميع الصيغ gif bmp jpg png وغيرها .

بسم الله الرحمن الرحيم

مدونة دوال

كيوتي العربي

#5

شكرا لكم على الرد

ساقرا المعلومات التي في الروابط و احاول كتابة الكود

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