# opengl-glew Bindings to OpenGL with GLEW extension loading. Chicken's other [opengl](http://wiki.call-cc.org/eggref/4/opengl) bindings are based on the old fixed function pipeline OpenGL. These bindings generated by [bind](http://wiki.call-cc.org/eggref/4/bind) with the OpenGL [core header file](http://www.opengl.org/registry/api/GL/glcorearb.h). Additionally, bindings to [GLEW](http://glew.sourceforge.net/) are provided for extension management. ## Installation This repository is a [Chicken Scheme](http://call-cc.org/) egg. It is part of the [Chicken egg index](http://wiki.call-cc.org/chicken-projects/egg-index-4.html) and can be installed with `chicken-install opengl-glew`. ## Requirements - Make - Bind ## Documentation All functions and constants from the OpenGL [core header file](http://www.opengl.org/registry/api/GL/glcorearb.h) are exported. Scheme style names are provided (underscores and camelCase replaced with hyphens), the `gl` prefix is removed from names, `is` functions are given question marks, and constants are bookended by `+`s (e.g. `tex-image2d`, `enabled?`, `+arb-viewport-array+`). ### 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. ### GL helper functions [procedure] (make-shader TYPE SOURCE) Creates and compiles a shader object given the shader's type (e.g. `+vertex-shader+`, `+geometry-shader+`, `+fragment-shader`), and a string containing the GLSL source. Returns an integer representing the ID of the shader. [procedure] (make-program SHADER-LIST) Creates and links a program object, given a list of shader objects (i.e. the integers returned by `make-shader`. Returns an integer representing the ID of the program. [procedure] (gen-buffer) [procedure] (gen-framebuffer) [procedure] (gen-program-pipeline) [procedure] (gen-query) [procedure] (gen-renderbuffer) [procedure] (gen-sampler) [procedure] (gen-texture) [procedure] (gen-transform-feedback) [procedure] (gen-vertex-array) Analogous to their pluralized counterparts, but only generates and returns one (integer) object. [procedure] (delete-buffer BUFFER) [procedure] (delete-framebuffer FRAMEBUFFER) [procedure] (delete-program-pipeline PROGRAM-PIPELINE) [procedure] (delete-query QUERY) [procedure] (delete-renderbuffer RENDERBUFFER) [procedure] (delete-sampler SAMPLER) [procedure] (delete-texture TEXTURE) [procedure] (delete-transform-feedback TRANSFORM-FEEDBACK) [procedure] (delete-vertex-array VERTEX-ARRAY) Analogous to their pluralized counterparts, but only accepts and deletes one (integer) object. ## Example This example depends on the [glfw3](http://wiki.call-cc.org/eggref/4/glfw3) egg for window and context creation. ``` Scheme (import chicken scheme) (use (prefix glfw3 glfw:) (prefix opengl-glew gl:)) (define *vertex* #<