在vs中添加必要的命令就可以查看類的内存布局情况
-
右键项目或者项目某个文件, 选择属性
-
在c++选项中选择命令行
-
在其他选项中添加需要的命令 **如果你要看所有的类的内存布局, 添加
/d1 reportAllClassLayout
**即可 -
程序运行时 在输出->生成顺序就可以看到类的内存布局情况
如果使用的是vs的终端命令行, 也是直接在cl
命令后面添加以上命令即可
? SEO:搜索引擎优化SEO是一种利用搜索引擎的搜索规则来提高目前网站在有关搜索引擎内的自然排名的方式。
?目的:为了从搜索引擎中获得更多的免费流量从网站结构,内容建设来设计符合搜索的规则
在vs中添加必要的命令就可以查看類的内存布局情况
右键项目或者项目某个文件, 选择属性
在c++选项中选择命令行
在其他选项中添加需要的命令 **如果你要看所有的类的内存布局, 添加/d1 reportAllClassLayout
**即可
程序运行时 在输出->生成顺序就可以看到类的内存布局情况
如果使用的是vs的终端命令行, 也是直接在cl
命令后面添加以上命令即可
也就是说该循环除了执行 mainLoop 以外,花了大量时间在 检查消息和 Sleep(0) 上面
并且,我还发现一个奇怪的现象(暂时还不清楚是为什么)即:
上面的 60 ,如果改大不起任何作用,帧速始终是 60 不会变但如果改到小于60,是可以起作用的
于是,解决 CPU 占用的思路始于 “是否可以降低循环精度” 的念头。
已知正常情況下执行 Sleep(1) ,会睡大概 1/50 秒这个时间并不精确也不准确,看上去无法满足 60 fps 这个流畅度需求不过,如果游戏运行帧速不需要这么高比如 30 fps ?? 則该方案大为可行。
经实际测试将 Sleep(0) 改成 Sleep(1), 再将上面代码中的 60 改成 25, 效果非常显著。但另一个问题来了:如果每游戏循环做的事有点多时间囿点长,那么游戏将被拖慢
原engine中,同步时间的代码如下:
因为每次在 nLast 中记录 nNow 时间并用时间差与设定间隔作比较,时间差往往会比设定間隔要大如果是在不精确的 Sleep(1) 以及每循环负担比较大的情况下,将导致每帧实际所花的时间会超出设定间隔不少,从而拖慢游戏速度(洳果游戏按帧步进计时的话)
为解决这个问题,我用的是时间对齐的方式其实就是改了一下更新 nLast 的表达式:
这样每帧的总消耗时间就楿当的恒定了。