السلام عليكم
لدي برنامج يقوم بالرسم ب opengl و هو يعمل
لكنني اريد ان اقوم بحفظ النتتج اي الرسومات التي تظهر في نافذة opengl على شكل صورة JPG او BMP او اي نوع اخر
لكنني لم اعرف كيف ابدا ذلك
السلام عليكم
لدي برنامج يقوم بالرسم ب opengl و هو يعمل
لكنني اريد ان اقوم بحفظ النتتج اي الرسومات التي تظهر في نافذة opengl على شكل صورة JPG او BMP او اي نوع اخر
لكنني لم اعرف كيف ابدا ذلك
تم تعديل هذه المشاركة بواسطة hbate_allah في 15 يناير 2010 في 21:43
بسم الله الرحمن الرحيم
أرجوا أن تسامحني يا أخي لأني لم أضع لك شرح مباشر :ohmy: :ohmy: :ohmy:
إن التعامل مع الصور لن يكون بالشكل المباشر
يعني لو أنك أردت الإحتفاظ الصورة سيكون كالتالي:
إستخراج البيانات من الذكرة العميل ram أو من ذاكرة الإيطار framebuufer الموجودة في الخادم vram ( هذا في مثالك )
معالجة هذه البيانات إن إحتاج الأمر ثم تخزينها على هيئات مختلفة كهيئة tag أو jpg أو ....
فإذا أردت النسخ صوة من الشاشة ستستعمل دالة glReadPixels لأخذ البكسلات من الشاشة ( البيانات ستأخذ طريق طويل من ذاكرة الإيطار نحو ذاكرة النظام ram أي نحو مصفوفتك أو ما شابه ) .
ثم ستحتاج إلى ضغط الصور و التعامل معها بإحترافية راجع المحور Textures Compressées من هذا الكتاب
أتمنى لك التوفيق إن شاء الله
تم تعديل هذه المشاركة بواسطة 3ds max2010 في 16 يناير 2010 في 01:28
تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

وعليكم السلام ،
سؤال جيد ،
الفكرة هي بقراءة محتوى Color Buffer ( سطح الألوان في OpenGL ) ، وهو عبارة عن مصفوفة من البايتات مرتبة بطريقة معينة . بعد قراءة تلك الباياتات وتخزينها في مصفوفة مثلاً ، تنتهي مهمّة OpenGL ، وننتقل إلى عملية كتابة هذه الصورة كملف BMP - وهو أسهل ملف يمكن انشاءه - بدون مكتبات مساعدة ، أو أن تستخدم مكتبة خارجية مثل DevIL لتخزين الصورة بأي نسق تريد .
الدوال التي تحتاج أن تقرأ عنها /
كتابة صورة من نوع BMP باستخدام المكتبة DevIL :
http://openil.sourceforge.net/
أو يمكنك القراءة عن هيكلة الملف BMP ، اذا أردت كتابة BMP Writer خاص بك .
سأحاول أن أفصّل أكثر في الموضوع ان تفرّغت ، ولعل الاخوة الاعضاء يفيدوك بشكل أكبر ،
اضافة :
يبدو أني كتبت الرد بالتزامن مع الاخ 3ds max ، :D ،
تم تعديل هذه المشاركة بواسطة الشمري في 16 يناير 2010 في 01:30
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
بالنسبة لمستخدمي Qt فالأمر لن يخرج عن سطر واحد فقط استخدم الدالة renderPixmap في الفئة QGLWidget وبإمكاني تحديد الابعاد في حال لم ارد اخذ صورة للمشهد كاملا .
ومن ثم احفظها بجميع الصيغ gif bmp jpg png وغيرها .
شكرا لكم على الرد
ساقرا المعلومات التي في الروابط و احاول كتابة الكود