Изменить яркость бликов растрового изображения с помощью Allegro - PullRequest
0 голосов
/ 15 декабря 2009

Я использую библиотеку игр Allegro для создания игры на плитке. Я хочу, чтобы плитки становились экспоненциально ярче. К сожалению, у Allegro нет функции «Ярче». Затем я решил переместить плитку в буфер, а затем для каждого пикселя, который он только что скопировал для этой плитки, я увеличил их значения rgb и поместил пиксель. Большая проблема с этим заключается в том, что он сильно уменьшил мою частоту кадров, поскольку он выполняет вдвое больше работы. Есть ли способ, которым я могу достичь этого, не имея растрового изображения плитки для каждой плитки, которая немного ярче (что было бы смешно). Спасибо

Ответы [ 2 ]

1 голос
/ 22 декабря 2009

Вы можете использовать:

draw_lit_sprite

то, что он делает, это берет BITMAP и рисует его, используя «свет», который вы должны установить ранее с помощью этой функции:

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); 

надеюсь, это поможет:)

0 голосов
/ 15 декабря 2009

Это может быть возможно с палитрами: http://alleg.sourceforge.net/stabledocs/en/alleg011.html

Я не очень много знаю об Allegro, но я знаю, что в старых 8-битных играх выцветание обычно достигается путем изменения таблицы цветов, из которой видеокарта считывает данные при рендеринге, что дает способ постоянного времени обновить много пикселей на экране одновременно.

Надеюсь, это поможет:)

...