91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vc中float與DWORD的互想轉換實現代碼

發布時間:2020-09-27 16:59:10 來源:腳本之家 閱讀:330 作者:SwineX 欄目:編程語言

引子:在看《龍書》的時候有個float到DWORD的轉換函數不理解。

DWORD d3d::FtoDw(float f) 
 
{ 
 
  return *((DWORD*)&f); 
 
}

背景: 有些函數需要傳入DWORD類型的變量,但是該變量的實際意義是用小數來表示的。這里就需要在不改變float本身值的情況下傳入一個DWORD變量。

一段網上的代碼

DWORD dw = 0;  
float f1 = 0.25;  
  
cout<<"f1 = "<<f1<<endl;  
  
dw = *((DWORD*)&f1);  
cout<<"dw = *((DWORD*)&f1): "<<dw<<endl;  
  
f1 = 0.0;  
cout<<"f1 = 0.0: "<<f1<<endl;  
  
f1 = *((float*)&dw);  
cout<<"f1 = *((float*)&dw): "<<f1<<endl;  

運行結果是

f1 = 0.25 
dw = *((DWORD*)&f1): 1048576000 
f1 = 0.0: 0 
f1 = *((float*)&dw): 0.25 

這里利用的是編譯器轉型的手段,對于任何字節對等的類型都適用,比如float到int,double到long等等。這樣的轉換可以保證二進制數據不丟失,從而保證數據的完整性。

顏色轉換,float <->DWORD

在DirectX程序中有些地方用DWORD(RGBA)格式表示顏色,其范圍是[0 - 255],在shader中則都以float來表示顏色,其范圍是[0.0 - 1.0],兩者間的轉換規則如下:

DWORD -> float 將DWORD除以255
float -> DWORD 將float值乘以255
舉個例子,127 / 255 = 0.5,0.1 * 255 = 25

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

佛坪县| 蓝田县| 木里| 舟曲县| 长阳| 台东县| 镇坪县| 上饶市| 洪江市| 濮阳县| 海城市| 平阳县| 新和县| 习水县| 长岭县| 抚松县| 沂南县| 壤塘县| 盐山县| 宁陵县| 珠海市| 普兰县| 南投县| 阿拉善盟| 吉安县| 双峰县| 自贡市| 龙陵县| 陕西省| 六盘水市| 育儿| 德江县| 郧西县| 武安市| 观塘区| 新龙县| 当阳市| 启东市| 长白| 保康县| 武川县|