欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

第二人生的源碼分析(四十八)接收服務器回應的紋

系統 2982 0
前面介紹了怎么樣發送紋理下載請求到服務器,那么在第二人生里又是怎么樣接收紋理圖片的呢?接著就來討論這個問題,它的代碼如下:
?
這是一個靜態成員函數,主要為了給網絡消息系統回調使用的。
#001?// static
#002?void LLViewerImageList::receiveImageHeader(LLMessageSystem *msg, void **user_data)
#003?{
#004? ???? LLFastTimer t(LLFastTimer::FTM_PROCESS_IMAGES);
#005? ????
#006? ???? // Receive image header, copy into image object and decompresses
#007? ???? // if this is a one-packet image.
#008? ????
#009? ???? LLUUID id;
#010? ????
#011? ???? char ip_string[256];
?
把二進制的IP地址轉換為字符串的方式。
#012? ???? u32_to_ip_string(msg->getSenderIP(),ip_string);
#013? ????
?
查看這個消息是否壓縮,如果壓縮就有不同的數據大小。
#014? ???? if (msg->getReceiveCompressedSize())
#015? ???? {
#016? ??????????? gImageList.sTextureBits += msg->getReceiveCompressedSize() * 8;
#017? ???? }
#018? ???? else
#019? ???? {
#020? ??????????? gImageList.sTextureBits += msg->getReceiveSize() * 8;
#021? ???? }
#022? ???? gImageList.sTexturePackets++;
#023? ????
#024? ???? U8 codec;
#025? ???? U16 packets;
#026? ???? U32 totalbytes;
?
獲取消息字段的信息。
#027? ???? msg->getUUIDFast(_PREHASH_ImageID, _PREHASH_ID, id);
#028? ???? msg->getU8Fast(_PREHASH_ImageID, _PREHASH_Codec, codec);
#029? ???? msg->getU16Fast(_PREHASH_ImageID, _PREHASH_Packets, packets);
#030? ???? msg->getU32Fast(_PREHASH_ImageID, _PREHASH_Size, totalbytes);
#031? ????
#032? ???? S32 data_size = msg->getSizeFast(_PREHASH_ImageData, _PREHASH_Data);
#033? ???? if (!data_size)
#034? ???? {
#035? ??????????? return;
#036? ???? }
#037? ???? if (data_size < 0)
#038? ???? {
#039? ??????????? // msg->getSizeFast() is probably trying to tell us there
#040? ??????????? // was an error.
#041? ??????????? llerrs << "image header chunk size was negative: "
#042? ??????????? << data_size << llendl;
#043? ??????????? return;
#044? ???? }
#045? ????
?
獲取傳送回來的文件頭數據。
#046? ???? // this buffer gets saved off in the packet list
#047? ???? U8 *data = new U8[data_size];
#048? ???? msg->getBinaryDataFast(_PREHASH_ImageData, _PREHASH_Data, data, data_size);
#049? ????
?
查找圖片管理列表里是否有請求下載這個紋理圖片。
#050? ???? LLViewerImage *image = gImageList.getImage(id);
#051? ???? if (!image)
#052? ???? {
#053? ??????????? delete [] data;
#054? ??????????? return;
#055? ???? }
#056? ???? image->mLastPacketTimer.reset();
?
這里調用函數receiveImageHeader來接收圖片的文件頭數據。
#057? ???? bool res = LLAppViewer::getTextureFetch()->receiveImageHeader(msg->getSender(), id, codec, packets, totalbytes, data_size, data);
#058? ???? if (!res)
#059? ???? {
#060? ??????????? delete[] data;
#061? ???? }
#062?}
?
通過上面的函數,就可以接收到發送回來的紋理圖片頭的數據,并保存到紋理下載線程里。這樣就實現了接收圖片文件頭的數據,當然了除了頭的數據,還有圖片的數據,這將在下一次里再給你介紹。

第二人生的源碼分析(四十八)接收服務器回應的紋理圖片頭數據


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲欧美日韩在线 | 偷拍小美女洗澡在线播放 | 国产成人综合欧美精品久久 | 中文在线观看免费视频 | 94在线成人免费视频 | aa国产视频一区二区 | 国产精品久久久爽爽爽麻豆色哟哟 | 无限看片在线版免费视频大全 | 东京不太热在线新视频 | 亚洲视频 中文字幕 | 一本到在线观看视频不卡 | 九九热免费视频在线观看 | 免费福利在线观看 | 免费一级做a爰片性视频 | 四虎4hutv永久在线影院 | 999精品视频在线观看 | 色哟哟在线观看精品入口 | 国产在线视频一区二区 | 久久人精品| 亚洲一区二区三区中文字幕 | 精品视频日本 | 欧美精品一区二区三区免费播放 | 午夜精品一区二区三区免费视频 | 欧美午夜一艳片欧美精品 | 涩色婷婷狠狠第四四房社区奇米 | 色男人的天堂 | 高清不卡一区 | 一级黄色淫片 | 国产日韩欧美视频在线观看 | 国产精品成人一区二区1 | 久久精品国产一区二区三区不卡 | 亚洲精品一区二区三区福利 | 欧美日本一区 | 粉嫩粉嫩芽的虎白女18在线视频 | 久久草在线 | 一级毛片a级 | 久久高清 | 青青热久久国产久精品秒播 | 99精品久久秒播无毒不卡 | 欧美日韩不卡合集视频 | 国产牛仔裤系列在线观看 |