Я новичок в программировании и хочу написать условные операторы для моделей OpenGL, чтобы при нажатии кнопки загружалась модель треугольника в векторный контейнер stl. Когда я снова нажимаю ту же кнопку, она загружает другую модель, скажем, Quad, в контейнер, а для дальнейших нажатий кнопки она загружает больше моделей, таких как Cube, Toroid и т. Д.
Я также собираюсь добавить кнопку «Отменить», чтобы удалить последнюю загруженную модель.
Может ли кто-нибудь помочь мне написать такое условное заявление о том, как загружать около 4 моделей в векторный контейнер STL для каждого нажатия кнопки, а также отменить загрузку
class Shapes {
public:
Shapes(){}
~Shapes(){}
virtual void draw()
{
std::cout << "Base function called" << std::endl;
}
};
class Models : public Shapes
{
public: Models()
{
}
~Models() {}
virtual void draw()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(-1.5f, 0.0f, -6.0f);
glBegin(GL_TRIANGLES);
glColor3f(1.0f, 0.0f, 0.0f); // Red color
glVertex3f( 0.0f, 1.0f, 0.0f); // Top
glColor3f(0.0f, 1.0f, 0.0f); // Green color
glVertex3f(-1.0f, -1.0f, 0.0f); // Bottom Left
glColor3f(0.0f, 0.0f, 1.0f); // Blue color
glVertex3f( 1.0f, -1.0f, 0.0f); // Bottom Right
glEnd(); // End drawing the triangle
}
};
Draw_All_models{
std::vector<Shapes*> myObjects;
myObjects.push_back(new Triangle());
myObjects.push_back(new Quad());
//more models...
void RenderScene()
{
std::vector<Shapes*>::iterator it;
for(it = myObjects.begin() ; it != myObjects.end; ++it) (*it)->draw();
}
}