Hi Peter,
I've marked up the fixes.
the glut callback functions must be marked
callback or
externalpkey must be masked to 8 bits to obtain ascii codes.
low level bound functions (without prototypes) will not take expressions as parameters.
But I would not spend too long with GLUT. The full Opengl gives you far more control and flexibility.
You are welcome to borrow any code from my OpenglView Demos if it helps save time.
Charles
Declare Sub ExitProcess Lib "kernel32.dll" (ByVal uExitCode As Long)
% GL_QUADS = &H0007
% GL_LINES = &H0001
% GLUT_DOUBLE = 2
% GLUT_RGBA = 0
Dim ogl32,glut32,kernel32 as long
ogl32 = LoadLibrary "opengl32.dll"
glut32 = LoadLibrary "glut32.dll"
kernel32 = LoadLibrary "kernel32.dll"
Bind glut32
(
glutInitWindowPosition glutInitWindowPosition
glutInitDisplayMode glutInitDisplayMode
glutInitWindowSize glutInitWindowSize
glutCreateWindow glutCreateWindow
glutKeyboardFunc glutKeyboardFunc
glutDisplayFunc glutDisplayFunc
glutMainLoop glutMainLoop
glutSwapBuffers glutSwapBuffers
glutDestroyWindow glutDestroyWindow
glutMainLoop glutMainLoop
)
Bind ogl32
(
glClearColor glClearColor
glBegin glBegin
glEnd glEnd
glColor3f glColor3f
glVertex3f glVertex3f
glVertex2f glVertex2f
glLineWidth glLineWidth
)
StackPointer=esp
Function Key(byval pkey as long, byval x as long, byval y as long) callback 'must be byval
k=pkey and 255
'print hex pkey
iF k =27 Or K =32 /* Escape / Space bar */
ExitProcess 0
End iF
End Function
Function Draw() callback
glClearColor 0.0, 0.0, 0.0, 0.0
glBegin (GL_QUADS)
glColor3f (1.0, 0.0, 0.0): glVertex2f ( 1.0, 1.0)
glColor3f (0.0, 1.0, 0.0): glVertex2f (-1.0, 1.0)
glColor3f (0.0, 0.0, 1.0): glVertex2f (-1.0,-1.0)
glColor3f (1.0, 1.0, 1.0): glVertex2f ( 1.0,-1.0)
glEnd
glLineWidth 2.5
glColor3f(0.5, 1.0, 0.0)
glBegin(GL_LINES)
glVertex2f(-1.0, 0.0 )
glVertex2f( 1.0, 0.0 )
glVertex2f( 0.0, -1.0)
glVertex2f( 0.0, 1.0 )
glEnd
glutSwapBuffers
End Function
A = GLUT_DOUBLE | GLUT_RGBA /* bad solution! */
glutInitDisplayMode (A) /* GLUT_SINGLE | GLUT_RGBA <--- doesn't go! - low level binding does not take expressions*/
glutInitWindowPosition 320,240
glutInitWindowSize 640,480
glutCreateWindow ("Colour")
glutDisplayFunc &Draw ' must be a callback function
glutKeyboardFunc &Key /* <--- compiler error! - key(..) must be a callback function */
glutMainLoop
/*Attention:
a click of the window close button [X] want not close this application!
program is still running in the task!
*/