2D Texture Array
A 2D Texture Arrays is much like a 3D Texture. They are created in the same way (Texture 3D TOP, GLSL TOP). The only difference between a 2D Texture Array and a 3D Texture is how they are used for texturing. A 3D Texture is sampled using a normalized (0-1) w texture coordinate, supports extend modes such as repeat and clamp in the w direction, and will blend between slices when the w coordinate falls between different slices. 3D Textures don't support mipmapping.
A 2D Texture Array on the other hand is sampled using non-normalized w coordinate. 0 for the first slice, 1 for the second slice, 2 for the 3rd slice and so on. No blending is done between slices (1.4 will give you the same result as 1). You can blend two slices yourself in a GLSL shader. In a 2D Texture Array each slice can be mipmapped. Extend modes for the w direction aren't supported, if you sample at an index beyond the end of the array, it will return the last slice of the array.
2D Texture Arrays are supported on Geforce 8000 series and higher video cards.
To use a 2D Texture Array you need to enable the OpenGL extension, by including this line at the start of your shader:
#extension GL_EXT_texture_array : enable
The samplers are declared as
uniform sampler2DArray name;
and sampled using the function