قم بتعديل سطوع/غاما المشهد بأكمله في برنامج OpenGL

StackOverflow https://stackoverflow.com/questions/139012

  •  02-07-2019
  •  | 
  •  

سؤال

هل يعرف أحد كيف يمكنني تحقيق التأثير التالي في 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 قد يكون هذا إجابة لسؤالك وإلا فمن المحتمل أن تتمكن من تنفيذ تصحيح غاما باعتباره تظليل بكسل

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