2017-10-14 8 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]); 
関連する問題