تغيير سطوع الصورة النقطية المزودة باستخدام legro

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

  •  19-09-2019
  •  | 
  •  

سؤال

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

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

المحلول

يمكنك استخدام:

Draw_lit_sprite.

ما يفعله هو أخذ صورة نقطية واسحبها باستخدام "إضاءة" يجب عليك تعيينها من قبل باستخدام هذه الوظيفة:

set_trans_blender.

في الأساس، ما عليك فعله هو:

    //Init allegro code here
    init_allegro_stuff();

    //It takes as arguments red, green, blue, alpha
    //so in this case it's a white light
    set_trans_blender(255, 255, 255, 255);

    //Draws the sprite like draw_sprite but with intensity
    draw_lit_sprite(buffer, yourSprite, x, y, intensity); 

آمل أن يساعد :)

نصائح أخرى

قد يكون من الممكن مع لوحات: http://alleg.sourceforge.net/stabledocs/en/alleg011.html.

لا أعرف الكثير عن Allegro، لكنني أعلم أنه في ألعاب 8 بت قد تم إنجازه عادة عن طريق تغيير جدول الألوان الذي يقرأه بطاقة الفيديو من عند التقديم، وبالتالي إعطاء طريقة زمنية ثابتة لتحديث الكثيرين بكسل على الشاشة في وقت واحد.

امل ان يساعد :)

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