Uses "FGLUT"
' multiply windows with callbacks
CallBack Sub Reshape(ByVal WinID As Long, _
ByVal W As Long, _
ByVal H As Long)
Local Ratio As Single
If H = 0 Or W = 0 Then Exit Sub
If W>H Then
Ratio=W/H
Else
Ratio=H/W
End If
glViewport(0,0,w,h)
glMatrixMode(%GL_PROJECTION)
glLoadIdentity()
gluPerspective(90.0, Ratio, 1.0, 100.0)
glMatrixMode(%GL_MODELVIEW)
If WinID=1 Then
glClearColor(0.8,0.2,0.2,1)
glColor3f(0.2,0.5,0.5)
ElseIf WinID=2 Then
glClearColor(0.2,0.8,0.2,1)
glColor3f(0.5,0.2,0.5)
Else
glClearColor(0.2,0.2,0.8,1)
glColor3f(0.5,0.5,0.2)
End If
End Sub
CallBack Sub Display(ByVal WinID As Long)
glClear(%GL_COLOR_BUFFER_BIT Or %GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
gluLookAt(0.0, 1.0, 6.0, _ ' from
0.0, 0.0, 0.0, _ ' to
0.0, 1.0, 0.0) ' up vector
Select Case WinID
Case 1:FGLUT_WireTeapot(4)
Case 2:FGLUT_WireSphere(4)
Case 3:FGLUT_SolidTeapot(4)
End Select
FGLUT_SwapBuffers
End Sub
CallBack Sub Keyboard(ByVal WinID As Long, _
ByVal Key As Long, _
ByVal X As Long, _
ByVal Y As Long)
If Key=27 Then FGLUT_DestroyWindow(WinID)
End Sub
Dim i,WinIDs(3) As Long
' create 3 windows
WinIDs(1)=FGLUT_NewWindowEx( 0, 0,400,400,"window 1")
WinIDs(2)=FGLUT_NewWindowEx(410, 0,400,400,"window 2")
WinIDs(3)=FGLUT_NewWindowEx( 0,438,810,200,"window 3")
' set for all windows callback's
For i=1 To 3
FGLUT_SetWindow(WinIDs(i))
FGLUT_SetDisplayCallback(Display)
FGLUT_SetKeyboardCallback(Keyboard)
FGLUT_SetReshapeCallback(Reshape)
Next
' start your engines ;-)
FGLUT_MainLoop
Bookmarks