發展teris的遊戲,我來,使用通常的MVC模式可能會弄亂我的代碼,以及,因爲OpenGL是如何GLEW下工作進行了總結,使其實質上難以建立在。相反,我想出了這個整齊的修改,也依賴於觀察者模式,這將使有點更有意義,至少在短期內(圖像不完全反映分類):
如何解決這個設計缺陷?
爲了解釋:
-Every框是一類,Engine
保存Entities
的實例,Game
保存Figure
的實例。
- Figure
繼承Entity
。
- Engine
觀察Game
,和Game
由觀察員用Figures
耦合。
如何它應該工作:
理想情況下,我應該實例Engine
將設置GLEW和GLFW與其他一切將彌補窗口,然後創建一個Game
對象,其中,在新的線程,將創建一個沿圖中,並通知引擎啓動繪圖循環,並且當設置該圖形時,通過Observer將對象指針傳遞給Engine
。
這做工精美,我將能夠通過繼承Entity
添加各種各樣的人物,人物不會從屏幕上掉下,因爲每個座標更新將經歷Game
,我可以,也許,讓每個人物的唯一着色器,如果這是必要的。
如何它的實際工作:
引擎被初始化,遊戲被初始化,數字是在另一個線程呼籲,並拋出
atioglxx.dll: 0xC0000005: Access violation reading location 0x00000728.
當被問及訪問任何的OpenGL函數。
我懷疑這種情況是因爲Figure
不知道,所有的配套功能,在Engine
啓動。我不能再在Figure
中再做一次。我可以將與View相關的所有內容移動到Engine
,但是我無法設置單獨的着色器,並且我必須爲Engine
內的每個數字構建VAO(頂點數組對象)。
那麼如何讓錯誤消失,同時儘可能少地引入變化?
這可能是一個有趣的問題,但也可能是題外話這裏。 – Walter
@Walter,我考慮將它放在gamedev.stack上,但它似乎並沒有像建築問題那麼多地處理 –