Проблема с запуском приложений с использованием Open GL
Пишу на Visual C++ 2010, если написать совсем простенькую программку с использование open GL то работает нормально, но а если чуть посложнее, то из самой среды, после компиляции, запускается и работает нормально. А если ЭТОТ ЖЕ, только что скомпилированый *.exe, запустить просто кликнув на него то он работает первые секунд 5 нормально, потом окно open GL зависает. Не знаю что с этим можно поделать, пробовал несколько версий Visual Studio, а то вдруг с ним что не так. Все файлы *.dll *.lib для работы с open GL закинуты кода надо, все библиотеки и заголовочные файлы указаны в самом коде. ведь оно работает при запуске внутри среды. Подскажите пожалуйста...
#include
#include
#include
void ar(float x, float y)
{
glColor3f(1.0, 0.0, 0.0);
glVertex2f(x, y);
}
void ag(float x, float y)
{
glColor3f(0.0, 1.0, 0.0);
glVertex2f(x, y);
}
void ab(float x, float y)
{
glColor3f(0.0, 0.0, 1.0);
glVertex2f(x, y);
}
void awh(float x, float y)
{
glColor3f(1.0, 1.0, 1.0);
glVertex2f(x, y);
}
void abl(float x, float y)
{
glColor3f(0.0, 0.0, 0.0);
glVertex2f(x, y);
}
void display()
{
float x=0,y=0;
char c;
int p=4;
glClear(GL_COLOR_BUFFER_BIT);
while(p!=0)
{
printf("vvedite napravlenie\n");
scanf("%c",&c);
switch(c)
{
case 'w': y+=0.01;break;
case 's': y-=0.01;break;
case 'd': x+=0.01;break;
case 'a': x-=0.01;break;
case 'p':printf("vvedite chvet\n");scanf("%c",&c);
switch(c)
{
case '1': p=1;break;
case '2': p=2;break;
case '3': p=3;break;
case '4': p=4;break;
case '5': p=5;break;
}
}
glBegin(GL_POINTS);
switch(p)
{
case 1: ar(x,y);break;
case 2: ag(x,y);break;
case 3: ab(x,y);break;
case 4: awh(x,y);break;
case 5: abl(x,y);break;
}
glEnd();
glFlush();
}
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(340, 340); //размер
glutInitWindowPosition(900, 000); //позиция
glutCreateWindow("mikro zmeika trosh"); //заголовок окна
glClearColor(0.0, 0.0, 0.0, 1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-0.5, 0.5, -0.5, 0.5, -1.0, 1.0);
glutDisplayFunc(display);
glutMainLoop();
}
работает так: курсор в консоль, по букве из набора WSDA потом ентер
также в консоль и ентер, меняется цвет точек написаных позже чем ввел смену цвета
p1-крсный
p2- зеленый
p3-синий
p4-белый
p5-черный