Skip to content
Bindings to OpenGL core profile with extension loading with GLEW for Chicken Scheme
C Scheme
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Bindings to OpenGL with GLEW extension loading. This egg should work (at least) on Linux, OS X, Windows, and on OpenGL ES platforms.

Chicken's other opengl bindings are based on the old fixed function pipeline OpenGL. These bindings generated by bind with the OpenGL core header file. Additionally, bindings to GLEW are provided for extension management.

This egg can also be compiled to provide bindings for OpenGL ES. This will be done automatically when compiled on ARM systems, or with the feature gles (e.g. chicken-install -D gles).


This repository is a Chicken Scheme egg.

It is part of the Chicken egg index and can be installed with chicken-install opengl-glew.


  • make
  • bind


All functions and constants from the OpenGL core header file are exported. Scheme style names are provided (underscores and camelCase replaced with hyphens), the gl prefix is removed from names, functions starting with is instead end in question marks, and constants are bookended by +s (e.g. delete-texture, enabled?, +arb-viewport-array+). The terms 1D, 2D and 3D are additionally hyphen separated in order to match their constant counterparts (e.g. tex-image-2d and +texture-2d+).

Functions whose C counterparts accept or return GLboolean accept or return a Scheme boolean value. Do not pass +true+ or +false+ to these functions.

GLEW functions

[procedure] (init)

Required to initialize GLEW/OpenGL. An OpenGL context must be created before this is called.

[procedure] (supported? EXTENSION-NAME)

Query whether the OpenGL extension, given as a string, is supported.


For numerous examples of opengl-glew usage, look at the gl-utils egg, glls egg, or the noise egg.

Version history

Version 0.9.0

28 November 2014

  • Add support for OpenGL ES
  • Fixes for Windows

Version 0.8.0

24 August 2014

  • Split gl-utils into its own egg
  • Hyphen-separate 2D, 3D, and 4D in name conversion

Version 0.7.0

8 August 2014

  • Export ->pointer, size
  • Improve shader error messages

Version 0.6.0

17 June 2014

  • Remove gl-math module (which is now its own egg: gl-math)

Version 0.5.0

3 June 2014

  • make-vao accepts vectors and blobs
  • load-ply returns u8vectors rather than blobs
  • gl-utils exports a non-garbage collected by default version of srfi-4
  • gl-math can create non-garbage collected matrices

Version 0.4.4

2 June 2014

  • load-ply-vao now returns buffer data (which is important to keep around!)

Version 0.4.3

30 May 2014

  • Add optional program argument to make-program
  • gl-math short-circuits rotations of 0

Version 0.4.2

24 May 2014

  • Fix segfaults caused by glewExperimental not being set (thanks, Terpri!)

Version 0.4.1

12 May 2014

  • Remove rogue print statement

Version 0.4.0

11 May 2014

  • Add gl-math module
  • Add gl-utils module
  • Add check-error

Version 0.3.0

  • Add single element gen and delete functions

Version 0.2.0

  • Add glcorearb.h - no longer downloaded at install time

Version 0.1.0

  • Initial release

Source repository

Source available on GitHub.

Bug reports and patches welcome! Bugs can be reported via GitHub or to alex.n.charlton at gmail.


Alex Charlton



Something went wrong with that request. Please try again.