2013-04-07 21 views
0

DirectX 9/C++聲明d3ddevice全局或傳入需要它的類?

您是否將d3ddevice全局聲明爲整個應用程序/遊戲,還是傳遞給需要d3ddevice的類?

常用的方法是什麼?

我的理解(這可能是錯誤的),如果你在全球範圍宣佈了,所有的類和函數將通過編譯後聲明的類內的全局變量頭記憶負擔?

我能具體談談我的問題我的應用程序,但是,我只是在尋找的典型方式。

我知道如何啓動d3ddevice等,它只是一個關於什麼是最好的問題?

+0

它是一種惱人的努力讓事情當地與Direct3D的,但我發現,如果你包你用什麼了,你走的問題變得更加容易。將設備存儲在一個類中允許所有成員無需使用它,所有成員都應該是相關的,因此它非常適合。 – chris 2013-04-07 21:55:26

+0

你能舉個簡單的例子來說明你的意思嗎?你的意思是說你有一個可以處理所有繪圖的direct3d類嗎?或者你是否像一個骯髒的妓女那樣通過一個d3ddevice? – Jimmyt1988 2013-04-07 22:01:36

+0

當我開始通過再下去,我創建了有一對夫婦輕微定製預設窗口,一個'Direct3D9'類來處理接口,一個'Direct3DDevice9'類爲該接口,一個'Scene'類小'Window'類爲我的渲染,和其他事情。每個都負責初始化和銷燬​​,並且每個包裝該接口的函數以刪除未使用的參數,並使其更加現代化。 – chris 2013-04-08 00:01:49

回答

1

我建議你在類內包裝的一切,從不把任何東西在全球,因爲全局變量可以在任何地方進行訪問,並且可以使它很難跟蹤變量和誰,也沒有使用它。

+0

好吧,這是一個非常典型的事情,遊戲程序員會實例化一個directxdevice和對象裏面讓我們說一個遊戲類,然後將該設備傳遞給敵人類和玩家類來繪製它們?或者他們是否有一個direct3d類具有非常通用的繪圖功能,然後從外部的敵人類或玩家類中調用它們,例如? – Jimmyt1988 2013-04-07 22:00:19

+0

@JamesT我會這麼做的方式是創建一個DirectX類,該類知道如何初始化它,並知道如何根據傳入的參數繪製事物。而不是創建一個玩家類,當涉及到繪製它時,您會傳入參數給DirectX(像pos,Shader文件,紋理文件)類,告訴它應該如何繪製對象。這樣它會將你的遊戲邏輯從你的繪圖邏輯中分離出來。 – Caesar 2013-04-07 22:06:32

+0

謝謝你。這對我來說完全有意義。你是聖人 – Jimmyt1988 2013-04-07 22:08:07