السلام عليكم، اريد أن أسأل عن الميثود الجاهز الذي يعطي لون البكسل الذي نضغط عليه على الwindow شكرا
ميثود جاهز لاعطاء اللون
وعليكم السلام ،
في OpenGL ، ما يظهر على النافذة أو جزء منها هو قادم من Frame Buffer ، الذي إحدى مكوناته حسب ما أعلم Color Buffer ،
لذلك السؤال بصيغة أخرى :
كيف أقرأ قيمة أو لون بيكسل في Color Buffer ؟
الجواب : باستخدام glReadPixels
void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * data);
لكن ستواجهك مشكلة معروفة ، حيث احداثيات OpenGL قد تختلف عن احداثيات النافذة ، وبالتالي قيم مؤشر الفأرة الذي يحصل عليه المبرمج لايمكن تطبيقه مباشرة على glReadPixels الا بعد عمل تعديلات ، بتطبيق معادلة ما ، اذا كان الاسقاط تم باستخدام glOrtho فالأمر بسيط ان شاء الله ،
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
شكرا اخي الشمري، ولكن عن ماذا تعبر كل من : format و dataو type الموجوده كباراميتر ،وما هي الارقومينت التي سأبعتها لهذه الباراميتر ؟؟؟؟
،
موجود في الرابط :
http://www.opengl.org/sdk/docs/man/xhtml/glReadPixels.xml
في الغالب ستكون هذه هي الاختيار الافضل :
unsigned char *data = new unsigned char[4];
glReadPixels( x,
y,
1,
1,
GL_RGBA,
GL_UNSIGNED_BYTE,
data);الان ، سيكون لون البكسل مخزن في أول عنصر من المصفوفة ( اللون الكامل من العنصر صفر الى 3) ، طبعا مش متأأكد تماما من صحة لكود - لم اجربه
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
السلام عليكم،
اسفه لتأخري بالرد ولكن هذا بسبب الامتحانات :wacko: ،
اخي لقد كتبت برنامج حتى يقوم بعملية boundary fill واستعملت به glReadPixel ولكن بطريقه تختلف قليلا عن ما وضعته ولكنه لم ينفذ معي ،ارجو المساعده في اكتشاف الخلل بهادا الكود :wink: المرفق،
شكرا
اسفه ، يوجد تعديل بسيط على الملف المرفق في الرد السابق :blush:
هذا موضوع عن هذه الخوارزميات /
الموضوع يستخدم بكسلات وهمية ( مربعات فقط ) ، ينما المطلوب في كودك هو التعامل مع بكسلات حقيقية باستخدام glReadPixel و ;وكتابة البسكل باستخدام glDrawPixels أو setcolor الموجودة في كودك .
بعد قراءة الموضوع السابق بتأني وفهمه ، يمكن تطبيقه على مثالك بسهولة .
ومشكلتك واضحة في تنظيم الاحداثيات ..
بعد قراءة الموضوع السابق ، يتضح أحد مكامن الخلل :
glOrtho(-10.0,10.0,-10.0,10.0,-10.0,10.0);
حيث يجب أن نتعامل مع احداثيات مناسبة اذا أردنا الابتعاد عن معادلات ووجع رأس .
وأكيد فيه مشاكل ثانية .
بانتظار المحاولة .
تم تعديل هذه المشاركة بواسطة الشمري في 12 ديسمبر 2009 في 06:49
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri