سؤال

أحتاج إلى تقليد أوضاع المزج في Photoshop ("الضرب" و"الشاشة" وما إلى ذلك) في كود OpenGL ES 1.1 الخاص بي (بدون تظليل).

هناك بعض المستندات حول كيفية القيام بذلك مع إتش إس إل:

أحتاج على الأقل إلى وضع الشاشة العامل.

هل هناك أي تطبيقات على خطوط الأنابيب الثابتة التي يمكنني إلقاء نظرة عليها؟

هل كانت مفيدة؟

المحلول

تعتمد معظم أوضاع المزج في Photoshop على أوضاع المزج Porter-Duff.

يتطلب ذلك أن تكون جميع صورك (الأنسجة، ومخزن العرض المؤقت) موجودة في مساحة ألوان مضروبة مسبقًا.يتم ذلك عادةً عن طريق ضرب جميع قيم البكسل في قيمة ألفا قبل تخزينها في نسيج.على سبيل المثالسيبدو البكسل الشفاف الكامل باللون الأسود في مساحة الألوان غير المتضاعفة مسبقًا.إذا لم تكن على دراية بمساحة الألوان هذه، فاقضِ ساعة أو ساعتين في القراءة عنها على الويب.إنه مفهوم أنيق وجيد ومطلوب للتركيبات المشابهة للفوتوشوب.

على أية حال - بمجرد حصولك على صورك بهذا التنسيق، يمكنك تمكين SCREEN باستخدام:

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR)

وضع MULTIPLY الكامل غير ممكن مع خط أنابيب OpenGL|ES.إذا كنت تعمل فقط مع وحدات البكسل المعتمة بالكامل، فيمكنك تزييفها باستخدام:

glBlendFunc(GL_ZERO, GL_SRC_COLOR)

ستكون نتائج البكسلات الشفافة سواء في نسيجك أو في مخزن الإطارات المؤقت الخاص بك خاطئة.

نصائح أخرى

يجب أن تجرب هذا:

glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA)

يبدو لي أن هذا ضرب على iPhone / OpenGL ES

أفضل مكان للبدء به هو الحصول على نسخة من كتاب احمر واقرأ الفصول المتعلقة بالمواد وأوضاع المزج.يحتوي على شرح شامل وواضح لكيفية عمل وظائف مزج OpenGL "الكلاسيكية".

لقد وجدت أن استخدام هذا:

glDepthFun( GL_LEQUAL);

كان كل ما أحتاجه هو الحصول على تأثير الشاشة، على الأقل كان يعمل بشكل جيد في مشروعي.

لست متأكدا من سبب نجاح ذلك، ولكن إذا كان شخص ما يعرف يرجى المشاركة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top