- {$APPTYPE GUI}
- uses SDL, dglOpenGL;
- procedure Render;
- begin
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
- end;
- procedure Setup;
- begin
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity;
- //gluPerspective(45, 800/600, 1, 100);
- glOrtho(-400,400,-300,300, 0, 10);
- glMatrixMode(GL_MODELVIEW);
- glEnable(GL_CULL_FACE);
- glEnable(GL_DEPTH_TEST);
- glClearColor(0.1, 0.1, 0.1, 1);
- end;
- procedure MainLoop;
- var
- t0 : LongWord;
- dt : LongWord = 0;
- event: TSDL_Event;
- done : boolean = false;
- begin
- repeat
- t0 := SDL_GetTicks;
- Render;
- SDL_GL_SwapBuffers;
- dt := (SDL_GetTicks - t0);
- if dt < 5 then SDL_Delay(5-dt);
- while SDL_PollEvent(@event)<>0 do
- begin
- case event.type_ of
- SDL_KEYDOWN: done := event.key.keysym.sym = SDLK_ESCAPE;
- SDL_QUITEV : done := true;
- end;
- end;
- until done;
- end;
- BEGIN
- SDL_Init(SDL_INIT_VIDEO);
- SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 16);
- SDL_SetVideoMode(800, 600, 0, SDL_OPENGL);
- InitOpenGL;
- ReadExtensions;
- Setup;
- MainLoop;
- SDL_Quit;
- END.