Opengl在每次点击中添加一个新对象?
问题描述:
void onClick(int button, int state, int x, int y) {
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
drawHouse(x,y);
}
我有一个问题有关的OpenGL的onclick功能。我画了一个对象(原始房屋),我想要显示它,当我点击鼠标。我怎样才能做到这一点?
我的老师给出了这个命令:“在用户按下鼠标左键后添加一个新的对象,在第一部分定义,每次点击都会在点击位置添加一个新对象,最多可创建10个对象在屏幕上。然后,每个点击后一个新的对象应该更换的第一个对象。“
感谢您的帮助......
答
一个可能soultion将存储在与10长度的阵列鼠标位置。每次点击都会向数组添加一个新条目。如果数组是满的,条目被覆盖:
#define MAX_OBJ 10
int pos_x[MAX_OBJ], pos_y[MAX_OBJ];
int count = 0;
int next_i = 0;
void onClick(int button, int state, int x, int y)
{
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
{
pos_x[next_i] = x;
pos_y[next_i] = y;
next_i ++;
if (next_i == MAX_OBJ) next_i = 0;
if (count < MAX_OBJ) count ++;
}
}
在主循环中可以得出对象已知的位置:
for(int i = 0; i < MAX_OBJ; ++ i)
drawHouse(pos_x[i], pos_y[i]);
你尝试过什么? – HolyBlackCat
如何将鼠标位置存储在长度为10的数组中?每次点击都会向数组添加一个新条目。如果数组已满,则条目将被覆盖。 – Rabbid76
@HolyBlackCat不,我卡在那里... – hsntrk