Я выполняю некоторые функции изображения, в которых много повторяющегося кода, например:
int r,sr;
int g,sg;
int b,sb;
int a,sa;
...
for(...){
sr += input[posin+0];
sg += input[posin+1];
sb += input[posin+2];
sa += input[posin+3];
}
...
output[posout+0] = sr;
output[posout+1] = sg;
output[posout+2] = sb;
output[posout+3] = sa;
Как я могу использовать шаблоны для этого из приведенного выше кода:
int r,sr;
int g,sg;
int b,sb;
...
for(...){
sr += input[posin+0];
sg += input[posin+1];
sb += input[posin+2];
}
...
output[posout+0] = sr;
output[posout+1] = sg;
output[posout+2] = sb;
или т. Д., В зависимости от значения, которое я даю функции? Я мог бы просто добавить if () в циклы, но это замедлит функцию. Итак, я хочу вырезать части кода в зависимости от значения BytesPerPixel, которое я даю функции, как?
Кроме того, значение BytesPerPixel должно стать константой внутри функции, поэтому, если я использую его где-то и его значение равно 3, вычисление * BytesPerPixel станет * 3. я хочу, чтобы это произошло, потому что это сделает это быстрее, а умножение на 4, 2 или 1 будет еще быстрее после того, как компилятор оптимизирует его.