Дано: C674x DSP. Цветовое пространство - 16 бит на пиксел (RGB 5:6:5).
Надо: реализовать быстрый алгоритм отрисовки с цветом прозрачности. Цвет прозрачности один - либо прозрачно, либо нет.
Пока так (неоптимально):
for(y=0;y<100;y++)
for(x=0;x<100;x++)
if(src_color!=colorkey)dst_color=src_color;
Советник производительности (perfomance adviser) пишет, что очень мешает условие внутри цикла и рекомендует заменить его на более быстрый алгоритм.
Копаю intrinsic для C674x, что-то не могу сообразить из них что-то эффективное. Конкретно, вот это условие:
if(src_color!=colorkey)dst_color=src_color;
Надо заменить на быстрое выражение, логика которого:
( SRC_COLOR == COLOR_KEY ? ) DST_COLOR : DST_COLOR=SRC_COLOR ;
Причём, значение цветового ключа можно выбрать любым, какое будет удобно. Будет только одно значение цветового ключа. Подозреваю, лучшие значения 0 или FFFF.
И всё-же как ускориться ?