3D程序性能提高:内嵌汇编

 3D程序是一种超高性能计算机程序,这意味着将不能再关键代码部分和内存关键代码部分使用高级API,从很大程度上说,必须自己编写与游戏代码内部循环有关的一切内容,否则游戏将无法达到所需要的速度和性能。显然,这不是说不能信任像DirectX之类的API,因为DirectX是作为一种高性能API编写的,并且进行了最大限度的精简。但是一般来说吗,你应该避免调用基于Win32 API的 高级函数。例如,你可能以为memset()函数的速度非常之快,但它只是用单字节进行填充。更好的填充方法是使用QUAD(4元数),因为可以一次写入4字节。下面是编写的用于4字节填充的内嵌汇编语言函数:

inline void MemSetQUAD(void* pDest,UINT uiData, UINT iCount)
{
    //这个函数填充32位对齐内存,iCount为QUAD数目
     _asm
    {
	mov edi,pDest;	//edi指向目标内存
	mov ecx,iCount;	//要移动的字数
	mov eax,uiData;	//数据
	rep stosd;	//移动数据
     }//end asm
}

如果使用WORD(2字节数据)进行填充,则将UINT改为USHORT即可

在某些情况下,上述代码可以使游戏的频帧提高2-4倍!因此,在考虑使用API调用时,应该弄清楚API调用执行了哪些操作。

你可能感兴趣的:(游戏,api,汇编,语言)