Я пишу приложение Direct3D
, моя текущая структура программы выглядит следующим образом:
Базовый класс окна, который содержит все данные и функции для взаимодействия с windows api (создание окна, обработка сообщений, основная функция и т. д. c.).
У меня также есть класс Direct3D
, производный от window class
и содержащий все инициализации по умолчанию Direct3D
(и DXGI
), которые я в основном никогда не нужно изменять (например, создание цепочки подкачки, обратных буферов и т. д. c.).
Затем у меня есть Renderer class
, который в настоящее время обрабатывает ввод с клавиатуры и мыши, все команды инициализации (сборка root подпись, псо, куча дескрипторов, геометрия, элементы рендеринга и т. Д. c.), Все функции обновления, такие как обновление буферов, и функции рисования. У меня также есть множество вспомогательных классов для управления различными вещами.
Теперь проблема в том, что основное приложение Renderer со временем выросло в размерах вне пропорций, и я хотел бы разделить его на несколько разных классов, например, ввод, инициализация, обновление, рисование и т. д. c.
Как мне это сделать правильно? Очевидным способом было бы просто связать все классы, но это не так элегантно, я бы предпочел, чтобы все они были побочными классами, я мог бы, вероятно, просто наследовать от всех этих классов, но это привело бы к множественному наследованию, которого следует избегать .
Возможно ли, чтобы каждый из этих классов унаследовал от renderer class
и чтобы все функции были доступны?
Если я создаю объект одного из классов рендеринга, тогда производные методы недоступны. Должен ли я создавать объект sperate для каждого из этих классов?
Должен ли я просто сделать все эти классы статичными c и просто вызывать методы из них принудительно?