x、y オフセットで同じサイズまたはそれ以上のサイズのバッファーにコピーする、任意のサイズのイメージ バッファーがあります。色空間は BGRA です。私の現在のコピー方法は次のとおりです。
void render(guint8* src, guint8* dest, uint src_width, uint src_height, uint dest_x, uint dest_y, uint dest_buffer_width) {
bool use_single_memcpy = (dest_x == 0) && (dest_y == 0) && (dest_buffer_width == src_width);
if(use_single_memcpy) {
memcpy(dest, src, src_width * src_height * 4);
}
else {
dest += (dest_y * dest_buffer_width * 4);
for(uint i=0;i < src_height;i++) {
memcpy(dest + (dest_x * 4), src, src_width * 4);
dest += dest_buffer_width * 4;
src += src_width * 4;
}
}
}
高速に実行されますが、それを改善して数ミリ秒余分に得るために何かできることがあるかどうかに興味がありました. アセンブリ コードを使用する場合は避けたいと思いますが、ライブラリを追加するつもりです。