قم بتعديل سطوع/غاما المشهد بأكمله في برنامج OpenGL
سؤال
هل يعرف أحد كيف يمكنني تحقيق التأثير التالي في OpenGL:
- تغيير سطوع المشهد المقدم
- أو تنفيذ إعداد جاما في برنامج OpenGL
لقد حاولت تغيير المعلمة المحيطة للضوء ونوع الضوء (اتجاهي ومتعدد الاتجاهات) ولكن النتيجة لم تكن موحدة.تيا.
شكرا لمساعدتكم، بعض المعلومات الإضافية:* لا يمكنني استخدام أي واجهة برمجة تطبيقات خاصة بنظام Windows.* يجب ألا يؤثر إعداد جاما على النافذة بأكملها حيث يجب أن يكون لدي جاما مختلفة لعروض مختلفة.
المحلول
في نظام Win32، يمكنك استخدام SetDeviceGammaRamp لضبط السطوع الإجمالي / جاما.ومع ذلك، يؤثر هذا على الشاشة بأكملها، لذا فهي ليست فكرة جيدة إلا إذا كان تطبيقك في وضع ملء الشاشة.
البديل المحمول هو إما رسم المشهد بأكمله أكثر سطوعًا أو خافتًا (وهو أمر صعب)، أو وضع رباعي ممزوج ألفا بملء الشاشة على المشهد بأكمله لتفتيحه أو تغميقه حسب الرغبة.لا يمكن لأي من هذه الأساليب التأثير على منحنى جاما، بل يمكن فقط التأثير على السطوع الإجمالي؛لضبط جاما، تحتاج إلى تحويل المشهد بأكمله إلى نسيج ثم عرضه مرة أخرى على الشاشة عبر تظليل البكسل الذي يقوم بتشغيل كل تيكسل من خلال وظيفة جاما.
حسنًا، بعد قراءة السؤال المحدث، ما تحتاجه هو إعداد رباعي مع مزج لتغميق أو تفتيح كل شيء تحته.على سبيل المثال.
if( brightness > 1 )
{
glBlendFunc( GL_DEST_COLOR, GL_ONE );
glColor3f( brightness-1, brightness-1, brightness-1 );
}
else
{
glBlendFunc( GL_ZERO, GL_SRC_COLOR );
glColor3f( brightness, brightness, brightness );
}
glEnable( GL_BLEND );
draw_quad();
نصائح أخرى
http://www.gamedev.net/community/forums/topic.asp?topic_id=435400 قد يكون هذا إجابة لسؤالك وإلا فمن المحتمل أن تتمكن من تنفيذ تصحيح غاما باعتباره تظليل بكسل