2D Texture differences
The most commonly used textures are 2-dimensional. There exist 3 kinds of 2D textures:
- Texture2D
Power of two sized (POTS) E.g: 1024²
These are supported on all OpenGL 1.2 drivers.
- MipMaps are allowed.
- All filter modes are allowed.
- Texture Coordinates are addressed parametrically: [0.0f ... 1.0f]x[0.0f ... 1.0f]
- All wrap modes are allowed.
- Borders are supported. (Exception: S3TC Texture Compression does not allow borders)
- Texture2D
Non power of two sized (NPOTS) E.g: 640*480.
GL.SupportsExtension( "ARB_texture_non_power_of_two" ) must evaluate to true.
- MipMaps are allowed.
- All filter modes are allowed.
- Texture Coordinates are addressed parametrically: [0.0f ... 1.0f]x[0.0f ... 1.0f]
- All wrap modes are allowed.
- Borders are supported. (Exception: S3TC Texture Compression does not allow borders)
- TextureRectangle
Arbitrary size. E.g: 640*480.
GL.SupportsExtension( "ARB_texture_rectangle" ) must evaluate to true.
- MipMaps are not allowed.
- Only Nearest and Linear filter modes are allowed. (default is Linear)
- Texture Coordinates are addressed non-parametrically: [0..width]x[0..height]
- Only Clamp and ClampToEdge wrap modes are allowed. (default is ClampToEdge)
- Borders are not supported.
Note that 1 and 2 both use the same tokens. The only difference between them is the size.