Re: [問題] 想了解遊戲業者如何做跨平台遊戲

看板C_and_CPP作者 (我愛阿蓉)時間15年前 (2010/10/12 08:58), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/7 (看更多)
l大第一種作法的話 user應該只看的到 Renderer這層interface吧 所以l大這方法還必須export CreateInstance這function給user呼叫 然後要new哪一個instance的實作 還是必須用第二種方法判定嗎?(#if OPENGL #else DXD) 目前比較無法理解 第一種作法如果沒搭配上面講的話 該怎麼做到 上層不需要管用opengl還是dxd的方法.... 所以在這層也是必須要寫兩分code 針對opengl和dx分別寫兩套同樣目的的程式碼嗎? 謝謝 ※ 引述《littleshan (我要加入劍道社!)》之銘言: : 比較漂亮的作法: : class Renderer { // 某個處理繪圖用的 abstract class : public: : virtual void render(const Scene& scene) = 0; // 把場景畫出來 : }; : class RendererD3D9 : Renderer { : public: : void render(const Scene& scene) : { : // 使用 DirectX 進行繪圖 : } : }; : class RendererGL : Renderer { : public: : void render(const Scene& scene) : { : // 使用 OpenGL 進行繪圖 : } : }; : 比較醜但是直接的做法 : void Render(const Scene& scene) : { : #ifdef USE_OPENGL : // 使用 OpenGL 進行繪圖 : #else : // 使用 DirectX 進行繪圖 : #end : } : 說穿了也沒什麼神奇的 : 當然其中也有一些技巧就是了 (比如 abstract factory pattern) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.70.221
文章代碼(AID): #1CixAZ8Y (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1CixAZ8Y (C_and_CPP)