diff --git a/figl/gl.scm b/figl/gl.scm
index 0098525..36a1eb7 100644
--- a/figl/gl.scm
+++ b/figl/gl.scm
@@ -296,7 +296,44 @@
 
 (re-export (%glShadeModel . set-gl-shade-model))
 
-
+;;;
+;;; 3.8.4 Texture Parameters
+;;;
+
+(define (set-gl-texture-parameter target pname . param)
+  (let ((n (length param)))
+    (cond ((= n 1) (%glTexParameterf target pname (car param)))
+	  ((> n 1) (%glTexParameterfv target pname (list->f32vector param))))))
+
+(export set-gl-texture-parameter)
+
+;;;
+;;; 3.8.11 Texture Image Specification
+;;;
+
+(define* (set-gl-texture-image target level internalFormat border format type data width #:optional (height #f) (depth #f))
+  (cond ((and height depth)
+	 (%glTexImage3D target level internalFormat width height depth border format type data))
+	(height
+	 (%glTexImage2D target level internalFormat width height border format type data))
+	(else
+	 (%glTexImage1D target level internalFormat width border format type data))))
+
+(export set-gl-texture-image)
+
+;;;
+;;; 3.8.12 Texture Objects
+;;;
+
+(define (gl-generate-texture)
+  (let ((tv (u32vector 0)))
+    (%glGenTextures 1 tv)
+    (u32vector-ref tv 0)))
+
+(export gl-generate-texture)
+
+(re-export (%glBindTexture . gl-bind-texture))
+
 ;;;
 ;;; 4.1 Per-Fragment Operations
 ;;;
