ypp писал(а):
Подобное решение я и имел ввиду. Одной из причин "некрасивости" данного решения является та же сильная связность классов.
Связаность мне кажется будет возникать только тогда, когда GraphicObject_Mesh_GL, что-то надо будет в GraphicObject_Mesh, так что вначале думать что надо сделать в GraphicObject_Mesh_GL, а потом уже в GraphicObject_Mesh, так как фактически GraphicObject_Mesh хранить исключительно геометрию, и если не делать конструктора геометрии в этом же классе, в нем помимо данных больше ничего и не будет.
Кроме этого, новая функциональность неизбежно влечет за собой какую-то переделку, это неизбежно. Вопрос в том, где и как это сделать с наименьшими затратами энергии.
Потом может быть несколько вариантов GraphicObject_Mesh, функций для его вывода, например, вариант для ландшафта, вариант, для 3ds, для md3 или еще чего-то. Проще на мой взгляд, не увеличивать функциональность GraphicObject_Mesh, а делать ему подобные классы с другой функциональнсотью.
Здесь есть другая проблема! Дело в том, что такой подход не позволяет использовать одну и ту же геометрию для для нескольких игровых объектов!
ypp писал(а):
З.Ы. Для себя я избрал иной вариант: рендеринг только через OpenGL. Это дает ряд преимуществ:
1) Пропадают описанные выше проблемы: каждий графический обьект рендерит сам себя с помощью вызовов OpenGL-функций.
В любом случае мне как программисты со стажем, кажется хорошим стилем разделить данные от функций, которые их обрабатывают, иначе может получиться Вавилонская башня. Сегодня, тебе надо только подгрузка данных, и их рендеринг, завтра, потребуется какая-то модификация данных, или их сохранение в другой формат, и все это в одном классе! Тяжело все тащить в один файл!
ypp писал(а):
2) Отпадает необходимость в изучении DirectX. ИМХО, лучше знать только одно API, но на профессиональном уровне, чем два на базовом уровне.
Если ты хочешь эти зарабатывать на жизнь - придется!
ypp писал(а):
3) Шейдеры. Недавно перешел с Cg на GLSL. Едиственное, что могу сказать: Cg _далеко_ позади GLSL. А как извесно, Cg и HLSL (DirectX-овый) - почти близнеци. Отсюда, могу предположить, что GLSL лучше HLSL.
Это интересно наблюдение! Спасибо!