Ваш код генерирует новый размер прямоугольников каждый раз, когда рисуется сцена. Вы должны хранить их тоже.
Я бы сказал, что-то в этом роде.
struct Rect {
GLfloat x1,y1;
GLfloat x2,y2;
};
std::vector <Rect> myVertices;
void Mouse(int button, int state, GLint x, GLint y)
{
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
{
myVertices.emplace_back(x,(600 - y),x + uid(dre), (600 - y) + uid(dre) );
}
}
GLvoid drawScene()
{
GLint index;
if (count > 0)
{
for(auto const& rect: myVertices)
{
glRectf(rect.x1,rect.y1,rect.x2,rect.y2);
}
}
glFlush();
}