Witam, jak zrobić kiedy w switch case chciałbym na przycisk dodawać nowy obiekt i go wyświetlać jako osobny kwadrat. moim sposobem rozmiar vectora zwiększa się, ale wyświetlają się wszystkie w tym samym miejsce, chyba. Pomocy!
class cProstokat
{
float x, y;
float a, b;
public:
friend class cScena;
cProstokat ();
cProstokat (float x1, float y1, float a1, float b1, float kat1, float R1, float G1, float B1);
};
class cScena
{
vector <cProstokat> tab;
public:
void rysuj();
void init();
void klawisz(char key, float x, float y);
void start();
};
void rysuj();
void klawisz(unsigned char k);
float xz=0, yz=0;
cProstokat a4;
void cScena::klawisz(char key, float x_d, float y_d)
{
// cProstokat a4;
switch (key) {
case 'n':
{
// cProstokat a4;
tab.push_back(a4);
cout<<tab.size()<<endl;
glutPostRedisplay();
} break;
case '1':
cout<<"1";
a4.x+=.1;
a4.y+=.1;
glutPostRedisplay();
break;
case '2':
a4.x-=.1;
a4.y-=.1;
glutPostRedisplay();
break;
case 'x':
case 'X':
exit(0);
}
}
void cScena::init()
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glColor3f(1.0, 1.0, 1.0);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); //stawia kamere na scene
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
}
void cScena::rysuj()
{
for (auto v=tab.begin(); v!=tab.end(); ++v)
{
v->rysuj();
}
}
void cProstokat::rysuj()
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glTranslatef(a4.x,a4.y,0);
glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glEnd();
glPopMatrix();
glFlush();
}