Stefan Dösinger wrote:
WINED3DFMT_R8G8B8 means that the 8 most significant bits contain the red color
channel, and the 8 least significant ones the blue channel. But in memory the
least significant bits are at the highest address, so the surface ends up as
BGR in memory. This patch finally changes that after the surface format
cleanup has been done as requested by AJ.
To my knowledge this format has been changed at least 3 times. Originally(in
old d3d8) it was GL_RGB as this seems most intuitive. Then Oliver noticed the
endianity problem and flipped it to GL_BGR, but incorrectly changed
WINED3DFMT_R5G6B6 too, which caused gl errors with the 16 bit format. Some
time later a patch for WINED3DFMT_R5G6B6 was sent which incorrectly changed
WINED3DFMT_R8G8B8 back to GL_RGB too. This patch only modifies
WINED3DFMT_R8G8B8 and leaves the other formats in peace :-)
And what about LockRect() ?