C Copyright (c) Mark J. Kilgard, 1994. C This program is freely distributable without licensing fees C and is provided without guarantee or warrantee expressed or C implied. This program is -not- in the public domain. C GLUT Fortran example; touches a reasonable amount of GLUT C callback functionality. subroutine display #include "GL/fgl.h" call fglclear(GL_COLOR_BUFFER_BIT) call fglfinish end subroutine passive(x,y) integer x,y print *,'passive motion',x,y end subroutine submenu(value) integer value print *,'value is',value end subroutine mainmenu(value) integer value print *,'main menu value is',value end subroutine timer(value) integer value print *,'timer value',value end subroutine mouse(btn,state,x,y) #include "GL/fglut.h" external timer integer btn,state,x,y print *,'mouse',btn,state,x,y call gluttimerfunc(1000,timer,25) end subroutine idle() #include "GL/fglut.h" integer count print *,'idle called' call glutidlefunc(glutnull) end subroutine keyboard(key,x,y) external idle integer key,x,y print *,'keyboard',key,x,y call glutidlefunc(idle) end subroutine tablet(x,y) integer x,y print *,'tablet motion',x,y end subroutine tbutton(button,state) integer button,state print *,'tablet button',button,state end subroutine dials(dial,value) integer dial,value print *,'dial movement',dial,value end subroutine box(button,state) integer button,state print *,'button box',button,state end program main #include "GL/fglut.h" external display external passive external submenu external mainmenu external mouse external keyboard external tablet external tbutton external dials external box call glutinit print *,glutcreatewindow('Fortran GLUT program') call glutdisplayfunc(display) call glutpassivemotionfunc(passive) call glutmousefunc(mouse) call glutkeyboardfunc(keyboard) call gluttabletmotionfunc(tablet) call gluttabletbuttonfunc(tbutton) call glutdialsfunc(dials) call glutbuttonboxfunc(box) i = glutcreatemenu(submenu) call glutaddmenuentry('something', 4) call glutaddmenuentry('another thing', 5) j = glutcreatemenu(mainmenu) call glutaddsubmenu('submenu', i) call glutaddmenuentry('quit', 666) call glutattachmenu(2) print *,'Number of button box buttons:', 2 glutdeviceget(GLUT_NUM_BUTTON_BOX_BUTTONS) print *,'Number of dials:',glutdeviceget(GLUT_NUM_DIALS) print *,'Depth buffer size',glutget(GLUT_WINDOW_DEPTH_SIZE) call glutmainloop end