Changelog: - limit usage of vertex arrays to correct states -- Lionel Ulmer - http://www.bbrox.org/
--- dlls/ddraw_CVS/d3ddevice/mesa.c Sun Nov 23 19:42:57 2003 +++ dlls/ddraw/d3ddevice/mesa.c Sat Dec 6 14:18:37 2003 @@ -1356,13 +1356,15 @@ for now to some 'special' cases where we can do a direct mapping between D3D types and GL types. - Note that in the future all calls will go through vertex arrays but the arrays - will be generated by this function. */ + Note: in the future all calls will go through vertex arrays but the arrays + will be generated by this function. + + Note2: colours cannot be mapped directly because they are stored as BGRA in memory + (ie not as an array of R, G, B, A as OpenGL does it but as a LWORD 0xAARRGGBB + which, as we are little indian, gives a B, G, R, A storage in memory. + */ if (((d3dvtVertexType & D3DFVF_POSITION_MASK) == D3DFVF_XYZ) && /* Standard XYZ vertices */ - (((d3dvtVertexType & (D3DFVF_DIFFUSE|D3DFVF_SPECULAR)) == 0) || /* Either no colours */ - (((d3dvtVertexType & D3DFVF_DIFFUSE) != 0) && /* Or diffuse only but the Alpha component is not used */ - (This->state_block.render_state[D3DRENDERSTATE_ALPHATESTENABLE - 1] == FALSE) && - (This->state_block.render_state[D3DRENDERSTATE_ALPHABLENDENABLE - 1] == FALSE)))) { + ((d3dvtVertexType & (D3DFVF_DIFFUSE|D3DFVF_SPECULAR)) == 0)) { int tex_stage; TRACE(" using GL vertex arrays for performance !\n"); /* First, the vertices (we are sure we have some :-) */