2009-12-15 1 views
0

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

ответ

1

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

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

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

0

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

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

Надежда, что помогает :)

+0

Спасибо, я использую 32 бит истинный цвет несчастливо – jmasterx