是否可以創建並使用IDirect3DDevice9
的子類?這樣做對我的代碼來說非常方便,但是我發現設備指針作爲IDirect3D9::CreateDevice()
的輸出參數給出,我不能僅僅告訴它改寫我的子類的實例。IDirect3DDevice9的子類?
我希望能夠這樣做,以便使用IDirect3DDevice9
的其他代碼在我希望使用具有擴展功能的設備的子類時不必更改。具體而言,子類需要讀取設備的渲染狀態設置並更新着色器變量,以便在實際繪製完成之前調用任何變體IDirect3DDevice9::Draw()
。同樣,我不希望使用d3d設備的其他代碼進行更改,因爲我希望它能夠使用常規設備或我的擴展設備。
是否有可能使用基類的實例創建子類的實例?如果是這樣,是否會導致任何問題,例如Direct3D未設置爲使用子類實例或內存中的多個設備實例,因而不得不共享gfx卡資源等?或者我應該考慮另一種解決方法而不使用子類?
爲什麼不使用'IDirect3DDevice9 *'作爲類的成員,而不是繼承? – ErikEsTT
這樣做需要其他類和代碼使用'IDirect3DDevice9 *'來使用這個包含設備指針的其他類,以獲得額外的功能。也許這是最好的選擇,但我想要無縫地使用多態對我有利。 – may5694