使用OpenGL创建MVC范例的最佳方法?

时间:2011-02-18 20:19:39

标签: cocoa design-patterns opengl

我开始学习OpenGL开发,特别是使用Mac OS X和Cocoa和/或CGL API,所以我将使用这些类作为示例,但我的问题更多的是关于设计而不是特定的实现。情况如下:

我有一个'场景'对象,可以包含或引用数据来呈现自己,并响应'render'消息来绘制自己,而不进行任何转换。

我有一个NSViewNSOpenGLView对象,用于创建openGLContext和pixelFormats,调整视图大小,并根据传递给它的任何转换更新ModelView和Projection。视图对象还包含一个摄像头struct,它是openGL转换的基础。

我有一个NSResponder对象的控制器对象,并响应用户输入。

我不知道这是否是最好的安排;在这种情况下,'model'应该是场景,我想通常控制器应该调整模型和视图之间的动作,但是每次想要绘制视图时视图发送[[controller scene] render]似乎很奇怪。

我不确定“相机”的最佳位置是否在视野中。我是否应该让场景对象也包括看着它的相机,并让它响应来自控制器的UI输入,该控制器当前传递给视图?

或者这完全是错误的做法?我试图把一些东西卖进MVC,这真的不适合它。我很好奇人们使用OpenGL的那种设计模式。

1 个答案:

答案 0 :(得分:1)

我按照你描述的方式看待它。视图用于控制视点和投影,因此在其中保留摄像机参考是合乎逻辑的。另一方面,场景对我来说是一个纯粹的数据容器,与你的模型相反,不会触及渲染方法。