Мне интересно, почему Draw не может просто взять ссылку на объект, который рисует.
class Sprite
{
public:
Sprite()
{
}
void Draw( GLuint & texture )
{
glBindTexture( GL_TEXTURE_2D, texture );
// drawing code
}
};
- Sprite - это тип, который рисует определенным образом
- GLuint - это тип, который рисуется
Где-то здесь может быть полиморфизм:
- у вас разные алгоритмы розыгрыша
- существуют полиморфные (виртуальные) методы в различных типах объектов, которые рисуются
так что Draw может быть виртуальным методом, а GLuint может быть абстрактным базовым классом, и в этом случае фактический вектор будет не с объектами, а с указателями на различные типы объектов.
Вы, конечно, должны отделить способ рисования объектов от способа хранения объектов, поэтому сохранение вектора в классе рисования или даже передача указателя, который предполагает, что они находятся в каком-либо массиве, маловероятны быть хорошей идеей.
Кстати, main должен возвращать int, а не void.