发展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上,但它似乎并没有像建筑问题那么多地处理 –