vc2010中Floating Point Model是否可切换?
在vc2010的工程设置中,C/C++ -> Code Generation下面有个Floating Point Model,提供了Precise,Fast,Strict三种模式(默认是Precise)。我看了介绍,说如果使用Fast会使浮点运算速度有大幅度提高,因为在其它两个模式下对浮点优化都过于保守。
由于游戏的预处理阶段涉及到构建bsp树及portal生成等计算,所以需要尽量精确,并且不太在意速度。而在开始进入游戏以后主要执行一些碰撞检测之类的对精度要求不高的计算,而且需要快速。所以我希望在游戏的预处理阶段使用Precise模式,然后在真正进入游戏之后使用Fast模式,能做到吗?可否用代码动态切换Floating Point Model模式?
急求,高分求。
[解决办法]
可以实现你的,要求。使用动态链接库就可以很好的把不同运算精度的二进制代码分隔开。
编译器目前没有提供代码块儿的独立编译设置,所以只能使用上面的办法。
[解决办法]
crt函数 control87, _controlfp, __control87_2, _controlfp_s
或者inline asm来修改fpu状态就行了