Re: [程式] 點陣圖和記憶體
看板GameDesign (遊戲設計)作者darkflier (我不要變小胖Orz)時間16年前 (2008/11/22 18:44)推噓5(5推 0噓 6→)留言11則, 6人參與討論串2/2 (看更多)
我個人提供兩個懶惰的方法
首先把你會讀入的檔案數量以及個檔案大小匯出成兩檔案
binary with xml( extenable file format )
如此你會知道全部所需讀取行為的大小為n
並且在該會出檔案中知道目前處理的進度
ex:
<DataStart>
<!-- Adress是目前檔案讀取位址 -->
<Image Name="79979.fat" Adress="0" />
<Progess Value="50" />
<Image Name="978978.fat" Adress="28825252" />
<Progess Value="100" />
<DataStart/>
如此你可以知道目前的進度為 g_iDataProgess/n
如此將可以丟給多執行緒畫出目前進度
不過比較常見的方式應該是
在parse你檔案的時候做一個while迴圈
int l_iDataCount = n;
while(n)
{
string l_strFileName = g_strFileList[n];
void*l_pData = DoDataParse( GetFileFormatData( l_strFileName ) );
g_pResource->AddData(l_pData);
DrawProgress();
}
這是最懶惰的方式
不過我比較偏向第一種就是
不過第一種需要花費的精神比較大
以上是一點小小的經驗
沒有寫的很仔細
請大家不要鞭我XD
※ 引述《kuso0516 (隱)》之銘言:
: 我有個程式要載入差不多6MB的24位元點陣圖
: 載入的時候都會頓一下
: 是因為尋找足夠記憶體所以花了點時間嗎?
: 這樣正常還是說有問題
: 是不是有比較好的處理方式
: 因為這是一張1600*1200的地圖(以後有可能更大)
: 我想做類似即時戰略的視窗和地圖
: 畫面可以上下左右移動
: 程式流程
: 1.把地圖畫到HDC上
: ┌──────────────┐
: │ │
: │ │
: │ │
: │ │1200
: │ │
: │ │
: └──────────────┘
: 1600
: 2.把地圖上的物件畫出來
: ┌──────────────┐
: │ │
: │ <囧> │
: │ │ │
: │ /\ │1200
: │ │
: │ │
: └──────────────┘
: 1600
: 3.把HDC某個部份畫到視窗上
: ┌──────────────┐
: │ │ ╭───_口X
: │ <囧> │ │ <囧> │
: │ │ │─→ │ │ │
: │ /\ │1200 │ /\ │←視窗
: │ │ ╰─────╯
: │ │
: │ │
: └──────────────┘
: 1600
: 另外想問的就是
: 有些遊戲會有LOADING的畫面
: 是怎樣寫的?
: fun work_1(); //某個會花很久時間的涵式
: loading(40); //畫面顯示40%成功
: fun work_2(); //某個會花很久時間的涵式
: loading(40); //畫面顯示60%成功
: fun work_3(); //某個會花很久時間的涵式
: loading(20); //畫面顯示100%成功
: 這樣嗎XD
: 新手發問,請多指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.118.21
→
11/22 18:46, , 1F
11/22 18:46, 1F
→
11/22 18:47, , 2F
11/22 18:47, 2F
→
11/22 18:47, , 3F
11/22 18:47, 3F
推
11/22 20:59, , 4F
11/22 20:59, 4F
推
11/23 03:38, , 5F
11/23 03:38, 5F
→
11/23 07:51, , 6F
11/23 07:51, 6F
推
11/23 21:54, , 7F
11/23 21:54, 7F
推
11/29 19:21, , 8F
11/29 19:21, 8F
推
11/30 00:54, , 9F
11/30 00:54, 9F
→
11/30 00:54, , 10F
11/30 00:54, 10F
→
11/30 00:54, , 11F
11/30 00:54, 11F
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章