использование GLUT

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

использование GLUT

Сообщение Amorf » 12.01.2013 00:08:24

здравствуйте. извините за нубство. но вот вроде сделал код
Код: Выделить всё
program project1;

{mode objfpc}

uses
  gl, glu, glut;
begin
  glutInit(@argc,argv);
  glutCreateWindow('OpenGL: Cube 2');
  glutMainLoop;
end.     
, с обрезков примеров. хотел, чтобы прога просто открывала окно для начала. она его открывает, но прога тут-же закрывается (файлы GLUT естественно в папке с программой. может кто объяснить нубу в чём дело? прога сделана в Lazarus, куски кода взяты из FPC IDE
Amorf
незнакомец
 
Сообщения: 8
Зарегистрирован: 07.01.2013 13:30:23

Re: использование GLUT

Сообщение Рождённый_в_СССР » 11.02.2013 01:29:06

ммм... у меня под линухом создаётся окно, но какое-то странное...
т.е. двигать, сворачивать, закрывать можно, а вот внутри - фреймы фона, на котором оно создалось...

вот нашёл у себя на винте в примерах окно с glut (сильно перегружено кодом):

Код: Выделить всё
program FirstGlutPrg;
uses gl, glut, glu;

const
   WIN_WIDTH = 640;
   WIN_HEIGHT = 480;

(* wrap the initialization of GLUT because it expects the commandline args in C style *)
procedure Initialize_GLUT(parse : boolean);
   var
      argv  : array of pchar;
      argc  : integer;
      index : integer;
   begin
      if parse then
         argc := ParamCount + 1
      else
         argc := 1;
      SetLength(argv, argc);
      for index := 0 to argc - 1 do
         argv[index] := pchar(ParamStr(index));
      glutInit(@argc, @argv);
   end;

procedure Initialize_GL;
   begin
      glClearColor(0.18, 0.20, 0.66, 0);
   end;

procedure GLHandler_DrawScene; cdecl;
   begin
      glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
      glutSwapBuffers;
   end;

procedure GLHandler_ResizeScene(width, height : longint); cdecl;
   begin
      if height = 0 then height := 1;
      glViewport(0, 0, width, height);
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity;
      gluPerspective(45, width / height, 0.1, 1000);
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity;
   end;

procedure GLHandler_Keyboard(key : byte; x, y : longint); cdecl;
   begin
      if key = 27 then halt(0);
   end;

(* variables *)
var
   screenWidth, screenHeight : integer;

(* main code *)
begin
   Initialize_GLUT(true);

   glutInitDisplayMode(GLUT_DOUBLE or GLUT_RGB or GLUT_DEPTH);

   glutInitWindowSize(WIN_WIDTH, WIN_HEIGHT);

   screenWidth  := GlutGet(GLUT_SCREEN_WIDTH);
   screenHeight := GlutGet(GLUT_SCREEN_HEIGHT);

   glutInitWindowPosition((screenWidth - WIN_WIDTH) div 2, (screenHeight - WIN_HEIGHT) div 2);

   glutCreateWindow('GLUT in Pascal #1');

   Initialize_GL;

   glutDisplayFunc(@GLHandler_DrawScene);
   glutReshapeFunc(@GLHandler_ResizeScene);
   glutKeyboardFunc(@GLHandler_Keyboard);

   glutMainLoop;
end.         
Аватара пользователя
Рождённый_в_СССР
новенький
 
Сообщения: 65
Зарегистрирован: 08.08.2007 01:03:26
Откуда: Саратов


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24

Рейтинг@Mail.ru