HLSL has the cbuffer type that can be used for look-up-tables.
What is the equivalent for cbuffers in OpenGL? What's the recommended way to store lookup tables?
The equivalent functionality to a "cbuffer" in GLSL is a uniform interface block, who's data comes from a buffer object. The totality of the concept is called a "Uniform Buffer Object". Though unlike D3D, OpenGL does not mark these buffers as being any different from any other kind of buffer object. So you could use the same buffer object for storing uniforms and for vertex data, or (more usefully) as the output of a transform feedback operation. Or whatever.
A uniform block is declared in a shader a bit like HLSL cbuffers, but in a GLSL style:
uniform BlockName
{
vec4 someVariable;
} optionalInstanceName;
While UBOs are an OpenGL 3.1 feature, you need to be using OpenGL 4.2 or ARB_shading_language_420pack if you want to be able to associate the block with a binding index in the shader:
//BlockName uses binding point 0.
layout(binding = 0) uniform BlockName
{
vec4 someVariable;
} optionalInstanceName;
Without this functionality, you must use glUniformBlockBinding to manually set the binding point for the block named BlockName. Though first you have to query the index of that block with glGetUniformBlockIndex. But once it's set, it's part of the program object's state, so you don't need to set it more than once.
In any case, I wouldn't characterize UBOs or cbuffers as being for "look-up-tables". Particularly in HLSL, where "cbuffer"s are the primary way to get uniform data to a shader.