Limit usage of vertex arrays to correct states.

This commit is contained in:
Lionel Ulmer 2003-12-08 21:53:40 +00:00 committed by Alexandre Julliard
parent 6d4fc7efe6
commit 88b928fd0d
1 changed files with 8 additions and 6 deletions

View File

@ -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 :-) */