Преждевременное закрытие, нубоэксперименты :( с GLUT - Free Pascal
Формулировка задачи:
здравствуйте. извините за нубство. но вот вроде сделал код
, с обрезков примеров. если вырезать вот этот кусок, то результат тот-же :glutInit(@argc,argv); хотел, чтобы прога просто открывала окно для начала. она его открывает, но прога тут-же закрывается (файлы GLUT естественно в папке с программой. может кто объяснить нубу в чём дело? прога сделана в Lazarus, куски кода взяты из FPC IDE
комменты есть в книге, в прмерах с диска изменена кодировка и они нечитабельны
program project1; {mode objfpc} uses gl, glu, glut; begin glutInit(@argc,argv); glutCreateWindow('OpenGL: Cube 2'); glutMainLoop; end.
ещё непонятно тут. в книге написано, что ничего лишнего нету в примерах программ. тогда становится неясным что такое cdec1, комментарии по этому поводу молчат. из листинга становится только понятно то, что это якобы описания процедур разных, но объеденённых для чего-то этим самым cdec1. зачем они объеденены, если это объеденение не используется, неясно. в книге графике уделено немного по GLUT, и тут я вроде всё прочитал
program Malevich; uses GL,GLUT; //---------------------------------------------------------- procedure OnRedraw; cdecl; glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_QUADS); glColor3f(0.8, 0.75, 0.75); glVertex2f(-1, -1); glVertex2f(-1, 1); glVertex2f( 1, 1); glVertex2f( 1, -1); glColor3f(0.1,0.1,0.1); glVertex2f(-0.9, -0.9); glVertex2f(-0.9, 0.9); glVertex2f( 0.9, 0.9); glVertex2f( 0.9, -0.9); glEnd; glFlush; end; //------------------------------------------------------------------- procedure OnResize(w,h:Longint); cdecl; begin glViewport(0, 0, w, h); glLoadIdentity; if w>h then glScalef(h/w,1,1) else glScalef(1,w/h,1); end; //------------------------------------------------------------------- begin glutInit(@argc,argv); glutCreateWindow('OpenGL: Malevich'); glutDisplayFunc(@OnRedraw); glutReshapeFunc(@OnResize); glMatrixMode(GL_MODELVIEW); glClearColor(1,1,1,1); glutMainLoop; end.
с соглашением вызова разобрался, извиняюсь, второй листинг
Решение задачи: «Преждевременное закрытие, нубоэксперименты :( с GLUT»
textual
Листинг программы
program project1; {$mode objfpc} uses gl, glu, glut; procedure do_draw; cdecl; begin glClear(GL_COLOR_BUFFER_BIT); glFlush(); end; begin glutInit(@argc,argv); glutCreateWindow('OpenGL: Cube 2'); glutDisplayFunc(@do_draw); glutMainLoop; end.
Объяснение кода листинга программы
- Объявлена глобальная процедура do_draw.
- В основной функции программы начинается создание окна с помощью функции glutCreateWindow.
- Задано имя окна 'OpenGL: Cube 2'.
- Указана функция обратного вызова для обработки отображения с помощью функции glutDisplayFunc.
- В функции обратного вызова для отображения выполняется очистка буфера цвета с помощью функции glClear.
- Выполняется вызов функции обратного вызова с помощью функции glutMainLoop.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д