diff --git a/dlls/ddraw/d3ddevice/mesa.c b/dlls/ddraw/d3ddevice/mesa.c index f92ebac9865..1bb90c19ddf 100644 --- a/dlls/ddraw/d3ddevice/mesa.c +++ b/dlls/ddraw/d3ddevice/mesa.c @@ -1356,13 +1356,15 @@ static void draw_primitive_strided(IDirect3DDeviceImpl *This, 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 :-) */