D
Dark19
Возникла проблема записи координат от мышки в массив. Мне нужно чтобы координаты сохранялись в массиве и тут же отрисовывались после каждого события от мышки. Я решил сделать запись координат с помощью цикла for (
), но i в нем тогда не растет по одному, а сразу же от 1 до 1000, пока я еще и не начал рисовать. Мне нужно сделать так чтобы i росло по 1 с каждой нарисованной линией и координаты сохранялись в массив по очереди и потом отрисовывались. Подскажите как можно сделать?
C++:
for (int i=1;i<1000;i++)
{
glVertex2f(x1,z);
glVertex2f(x2,z1);
glEnd();
mas3[i-1]=x;
mas4[i-1]=y;
mas1[i-1]=x2;
mas2[i-1]=z1;
glVertex2f(mas1[i-1],mas2[i-1]);
glVertex2f(mas3[i-1],mas4[i-1]);
glEnd();
cout<<i<<endl;
}
C++:
#include <windows.h>
#include <iostream>
#include <glut.h>
using namespace std;
int const n=1000;
int i=1,m=0,j=0,k=0,p=1;
int x=0,b=0;
int x1,x2;
int y=0,c=0;
int z,z1;
int mas1[n],mas2[n],mas3[n],mas4[n];
bool down=false, l=false;
unsigned char kei;
void keyboard ( unsigned char key, int x, int y)
{
switch (key)
{
case 'q':
exit(0);
break;
}
}
void reshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, w, h, 0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void mouse(int button, int state, int ax, int ay)
{
if (state == GLUT_DOWN)
{
down=true;
l=true;
}
else
{
down=false;
l=false;
}
x=ax;
y=ay;
}
void motion(int ax, int ay)
{
x1=x;
z=y;
if (l)
{
x2=ax;
z1=ay;
}
if (!l)
{
x1=ax;
z=ay;
}
}
void Draw()
{
glClearColor(0.0,0.0,0.0,0.0); //Цвет, в который очищается окно
glClear (GL_COLOR_BUFFER_BIT); //Очищение
glColor3f(1.0,0.0,0.0);
glBegin(GL_LINES);
for (int i=1;i<1000;i++)
{
glVertex2f(x1,z);
glVertex2f(x2,z1);
glEnd();
mas3[i-1]=x;
mas4[i-1]=y;
mas1[i-1]=x2;
mas2[i-1]=z1;
glVertex2f(mas1[i-1],mas2[i-1]);
glVertex2f(mas3[i-1],mas4[i-1]);
glEnd();
cout<<i<<endl;
}
glutSwapBuffers();
}
void timer(int=0)
{
Draw();
glutTimerFunc (1,timer,0);
}
void Initialize()
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
glOrtho (0, 1280, 1024, 0, -1, 1);
}
int main(int iArgc,char** cppArgv)
{
glutInit (&iArgc, cppArgv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowPosition (0, 0);
glutCreateWindow ("GRAF");
Initialize();
glutFullScreen();
glutReshapeFunc (reshape);
glutKeyboardFunc(keyboard);
glutMouseFunc(mouse);
glutMotionFunc(motion);
//glutPassiveMotionFunc(motion);
glutDisplayFunc (Draw);
timer();
glutMainLoop ();
cin.get();
cin.get();
}