example.f
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:3k
源码类别:

GIS编程

开发平台:

Visual C++

  1. C  Copyright (c) Mark J. Kilgard, 1994.
  2. C  This program is freely distributable without licensing fees
  3. C  and is provided without guarantee or warrantee expressed or
  4. C  implied.  This program is -not- in the public domain.
  5. C  GLUT Fortran example; touches a reasonable amount of GLUT
  6. C  callback functionality.
  7. subroutine display
  8. #include "GL/fgl.h"
  9. call fglclear(GL_COLOR_BUFFER_BIT)
  10. call fglfinish
  11. end
  12. subroutine passive(x,y)
  13. integer x,y
  14. print *,'passive motion',x,y
  15. end
  16. subroutine submenu(value)
  17. integer value
  18. print *,'value is',value
  19. end
  20. subroutine mainmenu(value)
  21. integer value
  22. print *,'main menu value is',value
  23. end
  24. subroutine timer(value)
  25. integer value
  26. print *,'timer value',value
  27. end
  28. subroutine mouse(btn,state,x,y)
  29. #include "GL/fglut.h"
  30. external timer
  31. integer btn,state,x,y
  32. print *,'mouse',btn,state,x,y
  33. call gluttimerfunc(1000,timer,25)
  34. end
  35. subroutine idle()
  36. #include "GL/fglut.h"
  37. integer count
  38. print *,'idle called'
  39. call glutidlefunc(glutnull)
  40. end
  41. subroutine keyboard(key,x,y)
  42. external idle
  43. integer key,x,y
  44. print *,'keyboard',key,x,y
  45. call glutidlefunc(idle)
  46. end
  47. subroutine tablet(x,y)
  48. integer x,y
  49. print *,'tablet motion',x,y
  50. end
  51. subroutine tbutton(button,state)
  52. integer button,state
  53. print *,'tablet button',button,state
  54. end
  55. subroutine dials(dial,value)
  56. integer dial,value
  57. print *,'dial movement',dial,value
  58. end
  59. subroutine box(button,state)
  60. integer button,state
  61. print *,'button box',button,state
  62. end
  63. program main
  64. #include "GL/fglut.h"
  65. external display
  66. external passive
  67. external submenu
  68. external mainmenu
  69. external mouse
  70. external keyboard
  71. external tablet
  72. external tbutton
  73. external dials
  74. external box
  75. call glutinit
  76. print *,glutcreatewindow('Fortran GLUT program')
  77. call glutdisplayfunc(display)
  78. call glutpassivemotionfunc(passive)
  79. call glutmousefunc(mouse)
  80. call glutkeyboardfunc(keyboard)
  81. call gluttabletmotionfunc(tablet)
  82. call gluttabletbuttonfunc(tbutton)
  83. call glutdialsfunc(dials)
  84. call glutbuttonboxfunc(box)
  85. i = glutcreatemenu(submenu)
  86. call glutaddmenuentry('something', 4)
  87. call glutaddmenuentry('another thing', 5)
  88. j = glutcreatemenu(mainmenu)
  89. call glutaddsubmenu('submenu', i)
  90. call glutaddmenuentry('quit', 666)
  91. call glutattachmenu(2)
  92. print *,'Number of button box buttons:',
  93.      2    glutdeviceget(GLUT_NUM_BUTTON_BOX_BUTTONS)
  94. print *,'Number of dials:',glutdeviceget(GLUT_NUM_DIALS)
  95. print *,'Depth buffer size',glutget(GLUT_WINDOW_DEPTH_SIZE)
  96. call glutmainloop
  97. end