يتم إعطاؤك مقتطفًا من التعليمات البرمجية للتحضير لرسم مشهد باستخدام OpenGL. يوجد ضمن المقتطف تحضيرات لنوعين من الكاميرات: كاميرا المستخدم وكاميرا الضوء. مهمتك هي إكمال التعليمات البرمجية من خلال تنفيذ الوظائف المفقودة `prepare_draw()` و`opengl_debug()` و`uniform()`.

تأخذ الدالة `prepare_draw()` ثلاثة معلمات: `drawable` (كائن يمثل المشهد المراد رسمه)، و`shader` (برنامج التظليل الذي سيتم استخدامه)، و`fbo` (معرف كائن المخزن المؤقت للإطار ). يجب أن تُرجع قيمة منطقية تشير إلى ما إذا كان التحضير للرسم ناجحًا أم لا. وفي حالة نجاح الإعداد، سيتم إعداد الزي الرسمي اللازم للمستخدم والكاميرات الضوئية. تُستدعى الدالة `opengl_debug()` أيضًا بعد كل استدعاء `uniform()`.

تأخذ الدالة `uniform()` ثلاث معلمات: `shader` (برنامج التظليل الذي سيتم تعيين الزي له)، و`name` (اسم الزي)، و`value` (القيمة التي سيتم تعيينها للزي الموحد ). يقوم بتعيين الزي في برنامج التظليل المحدد باستخدام الاسم والقيمة المحددة.

هدفك هو تنفيذ الوظائف المفقودة `prepare_draw()` و`opengl_debug()` و`uniform()` استنادًا إلى مقتطف الشفرة المقدم.
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}