Лучший способ создать парадигму MVC с использованием OpenGL? - PullRequest
0 голосов
/ 18 февраля 2011

Я начинаю узнавать о разработке OpenGL , в частности, с использованием Mac OS X и API-интерфейсов Cocoa и / или CGL, поэтому я буду использовать эти классы в качестве примеров, но мой вопрос больше касается дизайна, чемконкретная реализация.Вот ситуация:

У меня есть объект 'scene', который может содержать или ссылаться на данные для визуализации, и отвечает на сообщение 'render' для рисования сам, без каких-либо преобразований.

У меня есть объект NSView или NSOpenGLView, который создает openGLContext и pixelFormats, изменяет размеры представления и обновляет ModelView и Projection на основе любых преобразований, которые ему передаются.Объект просмотра также содержит камеру struct, которая является основой для преобразований openGL.

У меня есть объект контроллера, который является NSResponder объектом и отвечает на пользовательские входные данные.

Я не знаю, является ли это лучшим предложением;«модель» в этом случае должна быть сценой, и я полагаю, что классически контроллер должен опосредовать действие между моделью и представлением, но для представления странным представляется странным отправлять [[controller scene] render] каждый раз, когда он хочет нарисовать представление.

И я не уверен, что наилучшим местом для «камеры» является вид.Должен ли я сделать так, чтобы объект сцены включал в себя камеру, смотрящую на него, и должен ли он реагировать на ввод интерфейса от контроллера, который в настоящее время передается в представление?

Или это вообще неправильный подход?Я пытаюсь вставить в MVC что-то, что на самом деле не предназначено для этого.Мне любопытно, какие шаблоны проектирования люди используют в OpenGL.

1 Ответ

1 голос
/ 19 февраля 2011

Я вижу это так, как вы описали. Вид предназначен для управления точкой обзора и проекцией, поэтому логическое сохранение ссылки на камеру. С другой стороны, сценарий работает для меня как чистый контейнер данных, не затрагивая методы рендеринга, вопреки вашей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...