Module Glut


module Glut: sig .. end
Glut interface


Online documentation of the C API

Initialization


val glutInit : argv:string array -> string array
doc on opengl.org
val glutInitWindowPosition : x:int -> y:int -> unit
val glutInitWindowSize : width:int -> height:int -> unit
doc on opengl.org

type init_mode =
| GLUT_RGBA
| GLUT_RGB
| GLUT_INDEX
| GLUT_SINGLE
| GLUT_DOUBLE
| GLUT_ACCUM
| GLUT_ALPHA
| GLUT_DEPTH
| GLUT_STENCIL
| GLUT_MULTISAMPLE
| GLUT_STEREO
| GLUT_LUMINANCE
val glutInitDisplayMode : mode:init_mode list -> unit
doc on opengl.org
val glutInitDisplayString : string -> unit
doc on opengl.org
val glutInitContextVersion : major:int -> minor:int -> unit

type context_profile =
| GLUT_CORE_PROFILE
| GLUT_COMPATIBILITY_PROFILE
val glutInitContextProfile : profile:context_profile -> unit

Beginning Event Processing


val glutMainLoop : unit -> unit
doc on opengl.org
val glutLeaveMainLoop : unit -> unit
function only available with some implementations (ex: FreeGlut or OpenGlut)

Window Management


type window_id 
val glutCreateWindow : title:string -> window_id
doc on opengl.org
val glutSetWindow : win:window_id -> unit
val glutGetWindow : unit -> window_id
doc on opengl.org
val glutCreateSubWindow : win:window_id ->
x:int -> y:int -> width:int -> height:int -> window_id
doc on opengl.org
val glutDestroyWindow : win:window_id -> unit
doc on opengl.org
val glutPostRedisplay : unit -> unit
doc on opengl.org
val glutSwapBuffers : unit -> unit
doc on opengl.org
val glutPositionWindow : x:int -> y:int -> unit
doc on opengl.org
val glutReshapeWindow : width:int -> height:int -> unit
doc on opengl.org
val glutFullScreen : unit -> unit
doc on opengl.org
val glutPopWindow : unit -> unit
val glutPushWindow : unit -> unit
doc on opengl.org
val glutShowWindow : unit -> unit
val glutHideWindow : unit -> unit
val glutIconifyWindow : unit -> unit
doc on opengl.org
val glutSetWindowTitle : name:string -> unit
val glutSetIconTitle : name:string -> unit
doc on opengl.org

type cursor_type =
| GLUT_CURSOR_RIGHT_ARROW
| GLUT_CURSOR_LEFT_ARROW
| GLUT_CURSOR_INFO
| GLUT_CURSOR_DESTROY
| GLUT_CURSOR_HELP
| GLUT_CURSOR_CYCLE
| GLUT_CURSOR_SPRAY
| GLUT_CURSOR_WAIT
| GLUT_CURSOR_TEXT
| GLUT_CURSOR_CROSSHAIR
| GLUT_CURSOR_UP_DOWN
| GLUT_CURSOR_LEFT_RIGHT
| GLUT_CURSOR_TOP_SIDE
| GLUT_CURSOR_BOTTOM_SIDE
| GLUT_CURSOR_LEFT_SIDE
| GLUT_CURSOR_RIGHT_SIDE
| GLUT_CURSOR_TOP_LEFT_CORNER
| GLUT_CURSOR_TOP_RIGHT_CORNER
| GLUT_CURSOR_BOTTOM_RIGHT_CORNER
| GLUT_CURSOR_BOTTOM_LEFT_CORNER
| GLUT_CURSOR_FULL_CROSSHAIR
| GLUT_CURSOR_NONE
| GLUT_CURSOR_INHERIT
val glutSetCursor : cursor:cursor_type -> unit
doc on opengl.org
val glutWarpPointer : x:int -> y:int -> unit
val glutIgnoreKeyRepeat : ignore:bool -> unit

Menu Management



doc on opengl.org
type menu_id 
val glutCreateMenu : menu:(value:int -> unit) -> menu_id
doc on opengl.org
val glutGetMenu : unit -> menu_id
val glutSetMenu : menu:menu_id -> unit
doc on opengl.org
val glutDestroyMenu : menu:menu_id -> unit
doc on opengl.org
val glutAddMenuEntry : name:string -> value:int -> unit
doc on opengl.org
val glutAddSubMenu : name:string -> menu:menu_id -> unit
doc on opengl.org
val glutChangeToMenuEntry : entry:int -> name:string -> value:int -> unit
doc on opengl.org
val glutChangeToSubMenu : entry:int -> name:string -> menu:menu_id -> unit
doc on opengl.org
val glutRemoveMenuItem : entry:int -> unit
doc on opengl.org

type mouse_button =
| GLUT_LEFT_BUTTON
| GLUT_MIDDLE_BUTTON
| GLUT_RIGHT_BUTTON
| GLUT_WHEEL_UP
| GLUT_WHEEL_DOWN
val glutAttachMenu : button:mouse_button -> unit
val glutDetachMenu : button:mouse_button -> unit
doc on opengl.org

Callback Registration



Index of Callback Registration on OpenGL.org
val glutDisplayFunc : display:(unit -> unit) -> unit
doc on opengl.org
val glutReshapeFunc : reshape:(width:int -> height:int -> unit) -> unit
doc on opengl.org
val glutKeyboardFunc : keyboard:(key:char -> x:int -> y:int -> unit) -> unit
doc on opengl.org
val glutKeyboardUpFunc : keyboard_up:(key:char -> x:int -> y:int -> unit) -> unit

type mouse_button_state =
| GLUT_DOWN
| GLUT_UP
val glutMouseFunc : mouse:(button:mouse_button ->
state:mouse_button_state -> x:int -> y:int -> unit) ->
unit
doc on opengl.org
val glutMotionFunc : motion:(x:int -> y:int -> unit) -> unit
val glutPassiveMotionFunc : passive:(x:int -> y:int -> unit) -> unit
doc on opengl.org

type visibility_state =
| GLUT_NOT_VISIBLE
| GLUT_VISIBLE
val glutVisibilityFunc : visibility:(state:visibility_state -> unit) -> unit
doc on opengl.org

type entry_state =
| GLUT_LEFT
| GLUT_ENTERED
val glutEntryFunc : entry:(state:entry_state -> unit) -> unit
doc on opengl.org

type special_key =
| GLUT_KEY_F1
| GLUT_KEY_F2
| GLUT_KEY_F3
| GLUT_KEY_F4
| GLUT_KEY_F5
| GLUT_KEY_F6
| GLUT_KEY_F7
| GLUT_KEY_F8
| GLUT_KEY_F9
| GLUT_KEY_F10
| GLUT_KEY_F11
| GLUT_KEY_F12
| GLUT_KEY_LEFT
| GLUT_KEY_UP
| GLUT_KEY_RIGHT
| GLUT_KEY_DOWN
| GLUT_KEY_PAGE_UP
| GLUT_KEY_PAGE_DOWN
| GLUT_KEY_HOME
| GLUT_KEY_END
| GLUT_KEY_INSERT
val glutSpecialFunc : special:(key:special_key -> x:int -> y:int -> unit) -> unit
doc on opengl.org
val glutSpecialUpFunc : special_up:(key:special_key -> x:int -> y:int -> unit) -> unit
val glutIdleFunc : idle:(unit -> unit) -> unit
doc on opengl.org
val glutRemoveIdleFunc : unit -> unit
val glutTimerFunc : msecs:int -> timer:(value:'a -> unit) -> value:'a -> unit
doc on opengl.org

Color Index Colormap Management


val glutSetColor : cell:int -> r:float -> g:float -> b:float -> unit
doc on opengl.org to use with glIndex
val glutGetColor : cell:int -> float * float * float
doc on opengl.org

State Retrieval



type get_state =
| GLUT_WINDOW_X
| GLUT_WINDOW_Y
| GLUT_WINDOW_WIDTH
| GLUT_WINDOW_HEIGHT
| GLUT_WINDOW_BUFFER_SIZE
| GLUT_WINDOW_STENCIL_SIZE
| GLUT_WINDOW_DEPTH_SIZE
| GLUT_WINDOW_RED_SIZE
| GLUT_WINDOW_GREEN_SIZE
| GLUT_WINDOW_BLUE_SIZE
| GLUT_WINDOW_ALPHA_SIZE
| GLUT_WINDOW_ACCUM_RED_SIZE
| GLUT_WINDOW_ACCUM_GREEN_SIZE
| GLUT_WINDOW_ACCUM_BLUE_SIZE
| GLUT_WINDOW_ACCUM_ALPHA_SIZE
| GLUT_WINDOW_DOUBLEBUFFER
| GLUT_WINDOW_RGBA
| GLUT_WINDOW_PARENT
| GLUT_WINDOW_NUM_CHILDREN
| GLUT_WINDOW_COLORMAP_SIZE
| GLUT_WINDOW_NUM_SAMPLES
| GLUT_WINDOW_STEREO
| GLUT_WINDOW_CURSOR
| GLUT_SCREEN_WIDTH
| GLUT_SCREEN_HEIGHT
| GLUT_SCREEN_WIDTH_MM
| GLUT_SCREEN_HEIGHT_MM
| GLUT_MENU_NUM_ITEMS
| GLUT_DISPLAY_MODE_POSSIBLE
| GLUT_INIT_DISPLAY_MODE
| GLUT_INIT_WINDOW_X
| GLUT_INIT_WINDOW_Y
| GLUT_INIT_WINDOW_WIDTH
| GLUT_INIT_WINDOW_HEIGHT
| GLUT_ELAPSED_TIME
val glutGet : state:get_state -> int
doc on opengl.org

type glut_device =
| GLUT_HAS_KEYBOARD
| GLUT_HAS_MOUSE
| GLUT_HAS_SPACEBALL
| GLUT_HAS_DIAL_AND_BUTTON_BOX
| GLUT_HAS_TABLET
| GLUT_NUM_MOUSE_BUTTONS
| GLUT_NUM_SPACEBALL_BUTTONS
| GLUT_NUM_BUTTON_BOX_BUTTONS
| GLUT_NUM_DIALS
| GLUT_NUM_TABLET_BUTTONS
val glutDeviceGet : device:glut_device -> int
doc on opengl.org

type active_modifier =
| GLUT_ACTIVE_SHIFT
| GLUT_ACTIVE_CTRL
| GLUT_ACTIVE_ALT
val glutGetModifiers : unit -> active_modifier list
doc on opengl.org
val glutGetModifiersB : unit -> bool * bool * bool
same as glutGetModifiers but returns a tuple
let (shift, ctrl, alt) = glutGetModifiersB() in

val glutExtensionSupported : extension:string -> bool
doc on opengl.org

Font Rendering



doc on opengl.org

type stroke_font =
| GLUT_STROKE_ROMAN
| GLUT_STROKE_MONO_ROMAN

type bitmap_font =
| GLUT_BITMAP_9_BY_15
| GLUT_BITMAP_8_BY_13
| GLUT_BITMAP_TIMES_ROMAN_10
| GLUT_BITMAP_TIMES_ROMAN_24
| GLUT_BITMAP_HELVETICA_10
| GLUT_BITMAP_HELVETICA_12
| GLUT_BITMAP_HELVETICA_18
val glutBitmapCharacter : font:bitmap_font -> c:char -> unit
doc on opengl.org
val glutBitmapWidth : font:bitmap_font -> c:char -> int
doc on opengl.org
val glutStrokeCharacter : font:stroke_font -> c:char -> unit
doc on opengl.org
val glutStrokeWidth : font:stroke_font -> c:char -> int
doc on opengl.org
val glutBitmapHeight : font:bitmap_font -> int
val glutStrokeHeight : font:stroke_font -> float
val glutBitmapLength : font:bitmap_font -> str:string -> int
val glutStrokeLength : font:stroke_font -> str:string -> int

Geometric Object Rendering



doc on opengl.org
val glutWireSphere : radius:float -> slices:int -> stacks:int -> unit
val glutSolidSphere : radius:float -> slices:int -> stacks:int -> unit
val glutWireCone : base:float -> height:float -> slices:int -> stacks:int -> unit
val glutSolidCone : base:float -> height:float -> slices:int -> stacks:int -> unit
val glutWireCube : size:float -> unit
val glutSolidCube : size:float -> unit
val glutWireTorus : innerRadius:float -> outerRadius:float -> sides:int -> rings:int -> unit
val glutSolidTorus : innerRadius:float -> outerRadius:float -> sides:int -> rings:int -> unit
val glutWireDodecahedron : unit -> unit
val glutSolidDodecahedron : unit -> unit
val glutWireTeapot : size:float -> unit
val glutSolidTeapot : size:float -> unit
val glutWireOctahedron : unit -> unit
val glutSolidOctahedron : unit -> unit
val glutWireTetrahedron : unit -> unit
val glutSolidTetrahedron : unit -> unit
val glutWireIcosahedron : unit -> unit
val glutSolidIcosahedron : unit -> unit
val glutWireRhombicDodecahedron : unit -> unit
doc from openglut
val glutSolidRhombicDodecahedron : unit -> unit
doc from openglut

Game Mode



doc from OpenGlut
val glutGameModeString : mode:string -> unit
val glutEnterGameMode : unit -> unit
doc from openglut
val glutLeaveGameMode : unit -> unit

type game_mode =
| GLUT_GAME_MODE_ACTIVE
| GLUT_GAME_MODE_POSSIBLE
| GLUT_GAME_MODE_WIDTH
| GLUT_GAME_MODE_HEIGHT
| GLUT_GAME_MODE_PIXEL_DEPTH
| GLUT_GAME_MODE_REFRESH_RATE
| GLUT_GAME_MODE_DISPLAY_CHANGED
val glutGameModeGet : game_mode:game_mode -> int