Я программирую игру в Allegro 5, и сейчас я работаю над своим алгоритмом рисования. После вычисления я заканчиваю двумя ALLEGRO_BITMAP*
-объектами, где одна из них - моя «сцена» с изображенной на ней землей, а другая - теневой картой.Есть ли способ частично закрасить растровые изображения в Allegro?
Сцена - это просто текстуры игровых элементов, нарисованные на растровом изображении. Тень-карта - это растровое изображение, использующее черные цвета для светлых и белых цветов для ранее созданных теней.
Для рисования этих растровых изображений на экране я использую al_draw_scaled_bitmap(...)
и al_set_blender(ALLEGRO_DEST_MINUS_SRC, ALLEGRO_ONE, ALLEGRO_ONE)
, чтобы вычеркнуть белые элементы теневой карты со сцены, чтобы сделать их видимыми.
Проблема заключается в том, что я хочу, чтобы все пиксели, белые на карте теней, были тонированы в мировом цвете, который был рассчитан в каждом кадре раньше, и все черные элементы просто не изменены (серый означает частично тонированное).
Окончательный цвет может быть рассчитан как p.r * c.r + 1 - p.r
с p = the pixel-color on the scene
и c = the world-color
для красного, зеленого и синего каналов в rgb.
Есть ли способ добиться частичного тонирующего эффекта в Allegro 5 (возможно, без массивного переубеждения) ?
Я думал об использовании шейдеров, но я не нашел решения для их реализации с моими ALLEGRO_BITMAP*
-объектами.
Вы можете разделить ваши растровые изображения на под растровые изображения, но я думаю, что это не то, что вы хотите. Не могли бы вы включить некоторые фотографии? Два будут работать, что у вас есть и что вы хотите иметь. – rlam12