编写高效代码(4) 在精度允许的条件下,将浮点数定点化
来源:互联网 发布:五年级上册优化答案 编辑:程序博客网 时间:2024/04/29 03:16
浮点指令要比定点指令慢很多,功耗也大很多,在精度要求不那么高的情况下,就可以将浮点数定点化,用定点指令来代替浮点指令,一个典型的例子就是alpha混合。
《反恐精英》是很多人非常喜欢的游戏,在下面的游戏截图中,一个人扔了个烟雾弹,画面呈现出半透明的烟雾效果,随着时间的推移,烟雾逐渐散去,画面恢复到原来的状态。
这种效果如果让美工来实现,那会把人累死,其实这种效果在计算机中可以通过将两张图像进行半透明的混合来实现,这就是图像的alpha混合。混合后新图像每个像素的颜色值为:
Pixel_ C = (int)(Pixel_A * alpha + Pixel_B * ( 1-alpha ));
CS中的烟雾弹效果
alpha为透明度,是介于0和1之间的小数。随着时间的推移,烟雾图像的alpha值越来越小,当alpha为0时,烟雾效果就完全消失。
这条语句是一个浮点运算,由于图像上的每个像素都要经过这样的运算,相当耗时,其实可以将alpha定点化为0~32之间的一个整数值,0表示完全显示B图像,32表示完全显示A图像,中间分32个等级,这个代码可以改为:
Pixel_ C = (Pixel_A * alpha + Pixel_B * ( 32-alpha ) + 16)>>5;
由于全部是定点语句,执行时间大幅减少。
0 0
- 编写高效代码(4) 在精度允许的条件下,将浮点数定点化
- 连载:编写高效代码(10) 在精度允许的条件下,将浮点数定点化
- 浮点数的定点化
- 浮点数的定点化
- FPGA(一般只能处理定点数):浮点数的定点化
- 定点化的基本原理
- 单精度的浮点数的精度
- 浮点数的精度问题
- 控制浮点数的精度
- 浮点数精度的转换
- IEEE754,浮点数的精度
- PHP浮点数的精度
- 在Java中确定浮点数的精度
- FFT 定点化的文章
- tensorflow模型的定点化
- FPGA基础知识17(Matlab中滤波器的定点化 浮点运算转换为定点运算)
- 定点化
- 定点化
- 优先队列
- c语言 蓝欧版 分支结构练习(9题)
- 编写高效代码(3) 减少处理器不擅长的操作——不要逼我做我不喜欢的事情
- 小米研发工程师笔试卷A
- c实现带表头的单链表的创建、测长及打印
- 编写高效代码(4) 在精度允许的条件下,将浮点数定点化
- hdu-1540(线段树+最大连续区间)
- 生成字典序全排列
- 第十三章 网络命名空间(内核源码实现)--基于Linux3.10
- 编写高效代码(5) 尽量减少分支
- 编写高效代码(7) 优化内存访问——别让包袱拖垮了你
- hdu 1022 Train Problem I(模拟+栈)
- Android - 线程同步
- 各种距离