2011-02-18 81 views
0

我开始了解OpenGL发展,特别是使用Mac OS X和可可和/或CGL API的,所以我会使用这些类的例子,但我的问题更多的是设计,而不是特定的实现。这里的情况:使用OpenGL创建MVC范例的最佳方法?

我有一个“场景”的对象,可以包含或引用的数据来表现自己,并回应了“渲染”绘制消息本身,而无需任何转换。

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

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

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

而且我不知道如果“相机”最好的地方是在视图中。我是否应该拥有场景对象还包括照相机,并让它响应来自当前传递给视图的控制器的UI输入?

或者这是错误的做法完全?我正在试图将一些东西转化为MVC,但这并不意味着它。我很好奇人们在OpenGL中使用哪种设计模式。

回答

1

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

相关问题