電腦遊戲製作開發設計論壇 首頁 電腦遊戲製作開發設計論壇
任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

Google
問題

 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式高級班:DirectX、OpenGL及各種圖型函式庫
上一篇主題 :: 下一篇主題  
發表人 內容
Okerofujin
略有貢獻的成員


註冊時間: 2007-10-19
文章: 71

-40.53 果凍幣

發表發表於: 2008-11-16, PM 3:31 星期日    文章主題: 問題 引言回覆

問題

Okerofujin 在 2018-7-5, PM 11:36 星期四 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
yag
Site Admin


註冊時間: 2007-05-02
文章: 688

2673.35 果凍幣

發表發表於: 2008-11-16, PM 8:15 星期日    文章主題: Re: [問題發問] 用DirectDraw 寫程式的問題!!! 引言回覆

HPkon 寫到:
我用 DirectDraw 寫了一個顯示圖片的小程式
但是執行一直有例外錯誤!!!
但就是一直不知道錯誤點在哪???
能不能請各位大人幫忙一下!!!
謝謝!!!

http://www.badongo.com/file/12114690

你的vc++版本太新…我開啟不了@_@"
我只能開2005以下的…
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Okerofujin
略有貢獻的成員


註冊時間: 2007-10-19
文章: 71

-40.53 果凍幣

發表發表於: 2008-11-17, AM 3:38 星期一    文章主題: 引言回覆

問題

Okerofujin 在 2018-7-5, PM 11:36 星期四 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
yag
Site Admin


註冊時間: 2007-05-02
文章: 688

2673.35 果凍幣

發表發表於: 2008-11-17, PM 5:42 星期一    文章主題: 引言回覆

你把一個CDisplay物件用傳值傳給了drawPlayer函式
在drawPlayer跑完一次後,它會把這個傳進來的物件給delete掉
結果它的解構式中會把一些需要的東西給SAFE_RELEASE掉
雖然你外面那個CDisplay物件的一些成員指標還指向原本的那些空間
但是空間中的資料已經被Release掉了
所以第二次跑到drawPlayer函式時,你的程式就當了
解決方法很簡單
把drawPlayer的參數從傳值改成傳址就行了
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Okerofujin
略有貢獻的成員


註冊時間: 2007-10-19
文章: 71

-40.53 果凍幣

發表發表於: 2008-11-17, PM 6:34 星期一    文章主題: 引言回覆

問題

Okerofujin 在 2018-7-5, PM 11:37 星期四 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
yag
Site Admin


註冊時間: 2007-05-02
文章: 688

2673.35 果凍幣

發表發表於: 2008-11-17, PM 9:49 星期一    文章主題: 引言回覆

HPkon 寫到:
可以了耶!!!
謝謝大人的幫忙!!!

可是在下還有個小問題!!!
就是在下 new 了 2 個 Player 物件之後
人物的圖片會一直閃爍
但是如果把 Player 類別裡的 drawPlayer 函數裡的 clear() 拿掉的話就不會有問題
可是相對的畫面就沒辦法清除了
請問這有什麼方法可以解決嗎???


http://www.badongo.com/file/12127438

會這樣是因為你繪圖的流程架構有問題
CDisplay的UpdateBounds、Clear跟Present都不應該是每張圖就做一次的
這些都是全畫面相關的函式,每個frame應該只做一次
所以你必須把這三個函式抓出來到外面
大致像這樣:
代碼:
void drawGame()
{
   GameDisplay.UpdateBounds();
   GameDisplay.Clear();
   PlayerTest->drawPlayer(&GameDisplay);
   PlayerTest2->drawPlayer(&GameDisplay);
   GameDisplay.Present();
}

而drawPlayer裡留一個BitBlt就好

這是最簡單的改法,只是這個做法並不是什麼很好的解決方案
或許你該想想有沒有什麼其他的方式
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式高級班:DirectX、OpenGL及各種圖型函式庫 所有的時間均為 台灣時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
可以 在這個版面附加檔案
可以 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作