module openglmod
real,dimension(4,3)::arrcol
integer:: texture1
data arrcol(1,:)/0.76,0.2,0.02/
data arrcol(2,:)/0.88,0.6,0.06/
data arrcol(3,:)/1.0,1.0,0.01/
data arrcol(4,:)/0.04,0.44,0.67/
contains
subroutine display()
include <opengl.ins>,nolist
texture1=0
call glClear(ior(GL_COLOR_BUFFER_BIT,GL_DEPTH_BUFFER_BIT))
call glEnable(GL_TEXTURE_1D)
call glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
call glGenTextures(1,texture1)
call glBindTexture(GL_TEXTURE_1D,texture1)
call glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP)
call glTexParameterf(GL_TEXTURE_1D,GL_TEXTURE_MAG_FILTER,GL_NEAREST)
call glTexParameterf(GL_TEXTURE_1D,GL_TEXTURE_MIN_FILTER,GL_NEAREST)
call glTexImage1D(GL_TEXTURE_1D,0,3,4,0,GL_RGB,GL_UNSIGNED_BYTE,arrcol)
call glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE)
call glEnable(GL_TEXTURE_GEN_S)
call glEnable(GL_TEXTURE_1D)
call glBindTexture(GL_TEXTURE_1D,texture1)
call glPushMatrix ()
call glBegin(GL_TRIANGLES)!
call glTexCoord1f(0.0)
call glVertex3f(-25.0, -25.0, 0.0)
call glTexCoord1f(0.5)
call glVertex3f( 0.0, 25.0, 0.0)
call glTexCoord1f(1.0)
call glVertex3f( 25.0, -25.0, 0.0)
call glEnd()
call glPopMatrix ()
call glFlush()
call swap_opengl_buffers()
call glDisable(GL_TEXTURE_1D)
end subroutine
subroutine myinit ()
include <opengl.ins>,nolist
call glClearColor (0.0, 0.0, 0.0, 0.0)
call glShadeModel (GL_SMOOTH)
call glMatrixMode(GL_PROJECTION)
call glEnable(GL_DEPTH_TEST)
call glLoadIdentity()
call glOrtho (-50d0, 50d0, -50d0, 50d0, -50d0, 50d0)
call glMatrixMode(GL_MODELVIEW)
call glLoadIdentity ()
end subroutine
subroutine myReshape(w, h)
include <opengl.ins>,nolist
integer w,h
double precision aspect_ratio
if (h.NE.0) then
aspect_ratio=real(w)/h
call glViewport(0, 0, w, h)
call glMatrixMode(GL_PROJECTION)
call glLoadIdentity()
if (w .LE. h) then
call glOrtho (-50d0, 50d0, -50d0/aspect_ratio, &
& 50d0/aspect_ratio, -50d0, 50d0)
else
call glOrtho (-50d0*aspect_ratio, &
& 50d0*aspect_ratio, -50d0, 50d0, -50d0, 50d0)
endif
call glMatrixMode(GL_MODELVIEW)
call glLoadIdentity ()
endif
end subroutine
integer function opengl_proc()
include <clearwin.ins>,nolist
character*256 reason
integer w,h
reason=clearwin_string@('CALL_BACK_REASON')
if(reason.eq.'SETUP')then
call myinit()
else if(reason.eq.'RESIZE')then
w=clearwin_info@('OPENGL_WIDTH')
h=clearwin_info@('OPENGL_DEPTH')
call myReshape(w,h)
else if(reason.eq.'DIRTY')then
call display()
end if
opengl_proc=2
end function
end module openglmod