I have always been under the impression that in OpenGL textures must have dimensions that are a power of 2. I have always used textures conforming to that rule.

Today I threw in a texture with dimensions 384x256. Although 256 is a power of 2, 384 is definitely not. The texture worked, surprisingly, because I didn't expect it to even show up. When I used it on several surfaces, however, it slowed my system to a crawl.

So anyways...why did the texture work in the first place? I thought only dimensions that are powers of 2 are allowed in OpenGL.