加载中…
个人资料
用户1644951701
用户1644951701
  • 博客等级:
  • 博客积分:0
  • 博客访问:27,416
  • 关注人气:7
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

windwos游戏编程笔记(一)

(2012-08-27 23:40:37)
标签:

windows

game

分类: game
1,不要怕使用全局变量。对时间要求严格的函数,可以使用全局变量来传递参数,如函数 void plot(int x, int y, int color),由于参数要被压栈和出栈,执行这个函数所需的时间可能小于调用函数所需的时间,在这种情况下,可以使用全局变量,也就是函数写成 void plot(),变量 x、y、color 在函数外面定义,在调用这个函数之前对这些全局变量赋值即可 

2,使用 inline 来摆脱函数调用,inline 指示编辑器用函数体代码去替换函数调用,这样会使编译后的程序变大,但能提高运行速度。

3,尽量使用 32 位变量而不用 8 位或 16 位变量。由于高速缓存和其他相关内存储器的寻址变得较不规则,较小的数据可能会使速度下降。如下结构体#pragam pack(1)
struct CPOINT {
    short x, y;
    unsigned char c;
}
上面这个结构体本身是一个 (2 * sizeof(short) + sizeof(char)) = 5 字节长的结构体,由于没有字节对齐,内存寻址的时候会出现问题。更好的结构应该如下:
struct CPOINT {
    int x, y;
    int c;
}
这个结构体的所有成员都有相同的大小 sizeof(int) = 4 字节。因此仅用一个指针就可以通过递增 DWORD 的边界访问任何一结构成员。这个结构体的大小是 12 字节,是 4 的倍数,或者在 DWORD 的边界上,能明显提升性能。有时可以适当地填充一下结构体(可以使用无用的变量或 #pragam pack(32) 命令),使其大小为 32 字节的倍数,目前 32 是一个最佳长度,这样内存会浪费一些,但相应的速度也会快一些。

4,代码可以长一些,但尽量使用简单指令,使程序相对于编译器来说更加简单。如代码:if ((x += (2 * buffer[index++])) > 10),这句代码看起来很短,但如果将这句代码拆开的话,会有几个好处,首先,在调试的时候能放置多个断点,其次,将更易于编译器向 Pentium 处理器传递简单指令,这样使处理器使用更多的执行单元并行地处理更多的代码。

5,使用二进制移位运算进行乘数是 2 的幂的简单乘法。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有