Цитата:
Значит класс для хранения этих атрибутов по mesh должен быть один и не зависит от DX,OGL. А так как рендерить их надо по разному, то классы для вывода их должны иметь одного общего виртуального предка, но реализация их должна быть разной. Т.е. класс mesh_render_ogl должен содержать код, который будет рендерить заданную mesh.
Ну, здесь есть 2 возможных варианта:
1) Модель MVC (Model/View/Controller). Суть ее заключается в следующем: у нас есть некий набор обьектов и отдельно существует обьект (например, рендерер), который умеет рисовать остальные обьекты. Т.е. для вывода на экран нужен вызов вида: renderer.draw( robotMesh );
Модель хороша, только есть несколько серьезных недостатков. Например, сильная связность между классами (что не очень хорошо с точки зрения ООП): если один программист изменяет представление мэшей в классе Mesh, тогда другой программист должен изменить класс Renderer. С другой стороны,
класс Renderer может использовать любой API. Для примера взгляните на
движок Борескова (steps3d.narod.ru)
2) Каждый обьект сам умеет себя рисовать. Т.е. будут вызовы в стиле: robotMesh.render(); О достоинствах и недостатках судить можете сами. Только
как в этом случае организовать вывод с помощью нескольких API? Одно решение имеется (наследование + вирт. функции), но очень "некрасивое".