2017-10-14 132 views
-1
void onClick(int button, int state, int x, int y) { 
    if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) 
    drawHouse(x,y); 
} 

你好,Opengl在每次點擊中添加一個新對象?

我有一個問題有關的OpenGL的onclick功能。我畫了一個對象(原始房屋),我想要顯示它,當我點擊鼠標。我怎樣才能做到這一點?

我的老師給出了這個命令:「在用戶按下鼠標左鍵後添加一個新的對象,在第一部分定義,每次點擊都會在點擊位置添加一個新對象,最多可創建10個對象在屏幕上。然後,每個點擊後一個新的對象應該更換的第一個對象。

感謝您的幫助......

+2

你嘗試過什麼? – HolyBlackCat

+0

如何將鼠標位置存儲在長度爲10的數組中?每次點擊都會向數組添加一個新條目。如果數組已滿,則條目將被覆蓋。 – Rabbid76

+0

@HolyBlackCat不,我卡在那裏... – hsntrk

回答

0

一個可能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]); 
相關問題