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

Bonjour,Opengl ajouter un nouvel objet dans chaque clic?

J'ai un problème à propos de opengl onclick fonction. J'ai dessiné un objet (maison primitive) et je veux l'afficher quand je clique sur la souris. Comment puis-je faire ceci?

Mon professeur a donné cette commande: "Ajouter un nouvel objet, défini dans la première partie, après que l'utilisateur appuie sur le bouton gauche de la souris Chaque clic ajoute un nouvel objet à la position de clic. l'écran. Puis, après chaque clic un nouvel objet devrait remplacer le premier objet. "

Merci de nous aider ...

+2

Avez-vous essayé quoi que ce soit? – HolyBlackCat

+0

Qu'en est-il de stocker les positions de la souris dans un tableau d'une longueur de 10? Chaque clic ajoute une nouvelle entrée au tableau. Si le tableau est plein, les entrées sont remplacées. – Rabbid76

+0

@HolyBlackCat pas je coincé là-bas ... – hsntrk

Répondre

0

un soultion possible serait de stocker les positions de la souris dans un tableau avec une longueur de 10 Chaque clic ajoute une nouvelle entrée au tableau. Si le tableau est complet, les entrées seront écrasés:

#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 ++; 
    } 
} 

Dans la boucle principale, vous pouvez dessiner les objets aux positions connues:

for(int i = 0; i < MAX_OBJ; ++ i) 
    drawHouse(pos_x[i], pos_y[i]);