diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+2.13.2.0
+--------
+* Implement Uniform instances for `GLint`, `GLuint`, `GLfloat`, and `GLdouble`.
+
 2.13.1.1
 --------
 * Aftermath for the `glClearNamedFramebufferfi` chaos in the OpenGL registry,
diff --git a/OpenGL.cabal b/OpenGL.cabal
--- a/OpenGL.cabal
+++ b/OpenGL.cabal
@@ -1,5 +1,5 @@
 name: OpenGL
-version: 2.13.1.1
+version: 2.13.2.0
 synopsis: A binding for the OpenGL graphics system
 description:
   A Haskell binding for the OpenGL graphics system (GL, version 4.5) and its
diff --git a/src/Graphics/Rendering/OpenGL/GL/Shaders/Uniform.hs b/src/Graphics/Rendering/OpenGL/GL/Shaders/Uniform.hs
--- a/src/Graphics/Rendering/OpenGL/GL/Shaders/Uniform.hs
+++ b/src/Graphics/Rendering/OpenGL/GL/Shaders/Uniform.hs
@@ -157,6 +157,33 @@
                         getUniform program location buf
                         peek buf
 
+getSimpleUniform :: Storable a => Program -> UniformLocation -> Ptr a -> IO ()
+getSimpleUniform (Program p) (UniformLocation ul) = glGetUniformfv p ul . castPtr
+
+makeSimpleUniformVar :: (UniformComponent a)
+               => UniformLocation -> StateVar a
+makeSimpleUniformVar location = makeStateVar getter (uniform1 location)
+   where getter = do program <- fmap fromJust $ get currentProgram
+                     allocaBytes maxUniformBufferSize $ \buf -> do
+                        getSimpleUniform program location buf
+                        peek buf
+
+instance Uniform GLfloat where
+   uniform = makeSimpleUniformVar
+   uniformv = uniform1v
+
+instance Uniform GLint where
+   uniform = makeSimpleUniformVar
+   uniformv = uniform1v
+
+instance Uniform GLuint where
+   uniform = makeSimpleUniformVar
+   uniformv = uniform1v
+
+instance Uniform GLdouble where
+   uniform = makeSimpleUniformVar
+   uniformv = uniform1v
+
 instance UniformComponent a => Uniform (Vertex2 a) where
    uniform = makeUniformVar $ \location (Vertex2 x y) -> uniform2 location x y
    uniformv location count = uniform2v location count . (castPtr :: Ptr (Vertex2 b) -> Ptr b)
