《3D游戏编程大师技巧》——学习笔记

由于 memset() 是以单字节填充,速度偏慢。可由以下代码做多字节填充


32 位数填充

inline void Mem_Set_QUAD(void * dest, UINT data, int count)
{
    // 这个函数填充32位对齐内存
    // count 为 QUAD 数目
    _asm
    {
        mov edi, dest              ;  edi指向目标内存
        mov ecx, count             ;  要移动的32位字数
        mov eax, data              ;  32 位数据
        rep stosd                  ;  移动数据
    }
}


16 位数填充

inline void Mem_Set_WORD(void * dest, USHORT data, int count)
{
    // 这个函数填充16位对齐内存
    // count 为 WORD 数目
    _asm
    {
        mov edi, dest              ;  edi指向目标内存
        mov ecx, count             ;  要移动的32位字数
        mov ax, data               ;  32 位数据
        rep stosw                  ;  移动数据
    }
}



你可能感兴趣的:(游戏编程,C++)