Я пытаюсь написать игру на Vulkan и использую систему управления окнами glfw. То, как я структурировал свой код, является иерархическим со всем вулканом / графикой на самом низком уровне и абстрагированным. На моем высшем уровне у меня есть игровой логический код.
Проблема у меня в том, на каком «уровне» поставить окно. Поскольку окно glfw так тесно взаимодействует с vulkan, я хочу сохранить его на низком уровне, но проблема в том, что мне нужно, чтобы окно также было доступно на более высоком уровне, чтобы я мог использовать его в своем игровом цикле. Если я сделаю окно доступным на более высоком уровне, тогда я в основном включаю код на вулканском языке на высоком уровне, где я не хочу, чтобы это было (даже с оберткой вокруг glfwwindow, у меня все еще будет класс, который напрямую использует низкоуровневую графику API на высоком уровне, который я не хочу).
Так что же лучше всего делать с окнами при проектировании игрового движка?