とりあえず、この本の C のサンプルを Fortran に移植してみる。
例題1 窓が開かれて何もしない。ESCで終了。
MODULE m_callback USE opengl_gl USE opengl_glut IMPLICIT NONE INTEGER(glcint), PARAMETER :: KEY_ESC = 27 CONTAINS !--------------------------- SUBROUTINE display() IMPLICIT NONE CALL glClear(GL_COLOR_BUFFER_BIT) CALL glFlush() RETURN END SUBROUTINE display !--------------------------- SUBROUTINE myKbd(key, ix, iy) IMPLICIT NONE INTEGER(glcint), INTENT(IN OUT) :: key, ix, iy IF (key == KEY_ESC) STOP RETURN END SUBROUTINE myKbd !--------------------------- END MODULE m_callback !========================================================= MODULE m_subs USE m_callback IMPLICIT NONE CONTAINS !--------------------------- SUBROUTINE myInit(progname) IMPLICIT NONE CHARACTER(LEN = *), INTENT(IN) :: progname INTEGER(glcint) :: iwidth = 500, iheight = 500, iwin CALL glutInitWindowPosition( 0, 0 ) CALL glutInitWindowSize( iwidth, iheight ) CALL glutInitDisplayMode( GLUT_RGBA ) iwin = glutCreateWindow( progname ) CALL glClearColor( 0.0, 0.0, 0.0, 1.0 ) CALL glutKeyboardFunc( myKbd ) RETURN END SUBROUTINE myInit !--------------------------- END MODULE m_subs !========================================================= PROGRAM GLUT1 USE m_subs IMPLICIT NONE CALL glutInit() CALL myInit("GLUT1") CALL glutDisplayFunc( display ) CALL glutMainLoop() STOP END PROGRAM GLUT1