fortran66のブログ

fortran について書きます。

とりあえず、この本の C のサンプルを Fortran に移植してみる。

用いたのは、f90gl-1.2.13。

例題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