When using GL_BGRA as the format param to glTexImage isn’t the _REV suffix on the type param redundant? Example:

glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA4, 256, 256, 0, GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4_REV, NULL );

GL_BGRA already tells the driver the order of the color channels.

Does anybody have a table mapping DX formats to the closest (best) OGL internal format and the proper format/type combination? Currently I am stepping through each format adjusting the params till everything lines up. The thing that bothers me the most is the parameter inconsistency, for example you can specify GL_UNSIGNED_BYTE or GL_UNSIGNED_INT_8_8_8_8 for an RGBA8 texture. The interface would be much cleaner if there was a single param to specify the source pixel format. I am curious as to the original justification for the two seperate parameters.

Nevermind I have divined the endian reason for both the _REV and the two parameters. I am trying to use PixelStore with the SWAP_BYTES param on an nv adapter to no avail…

What about loading floating point textures, wouldn’t the SWAP_BYTES param be required for loading dds floating point textures on a big endian machine?