【发布时间】:2021-07-24 22:08:49
【问题描述】:
我试图在这个程序中绘制多个矩形,但是每当我绘制一个新矩形时,旧矩形就会消失,我怎样才能在不丢失旧矩形的情况下绘制一个新矩形?这是我的程序:
struct Position
{
Position() : x(0), y(0) {}
float x, y;
};
Position start, finish;
void mouse(int button, int state, int x, int y)
{
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
{
start.x = finish.x = x;
start.y = finish.y = y;
}
if (button == GLUT_LEFT_BUTTON && state == GLUT_UP)
{
finish.x = x;
finish.y = y;
}
glutPostRedisplay();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUADS);
glVertex2f(start.x, start.y);
glVertex2f(finish.x, start.y);
glVertex2f(finish.x, finish.y);
glVertex2f(start.x, finish.y);
glEnd();
glFlush();
}
【问题讨论】:
-
保留开始和结束位置的数据结构(可能是
vector<pair<Position>>),当您单击时添加到该列表中,然后使用绘图代码glBegin(GL_QUADS)等遍历此列表... -
我建议你接受@lisyarus 的回答,因为他的回答是第一个(即使我做了一些额外的工作)