wined3d: Improve drawStridedInstanced().
This commit is contained in:
parent
73d98ccd4e
commit
a44da70d63
|
@ -838,15 +838,15 @@ static inline void drawStridedInstanced(IWineD3DDevice *iface, WineDirect3DVerte
|
|||
|
||||
/* First, figure out how many instances we have to draw */
|
||||
for(i = 0; i < MAX_STREAMS; i++) {
|
||||
/* Look at all non-instanced streams */
|
||||
if(!(stateblock->streamFlags[i] & WINED3DSTREAMSOURCE_INSTANCEDATA) &&
|
||||
stateblock->streamSource[i]) {
|
||||
int inst = stateblock->streamFreq[i];
|
||||
|
||||
if(numInstances && inst != numInstances) {
|
||||
ERR("Two streams specify a different number of instances. Got %d, new is %d\n", numInstances, inst);
|
||||
/* Look at the streams and take the first one which matches */
|
||||
if(((stateblock->streamFlags[i] & WINED3DSTREAMSOURCE_INSTANCEDATA) || (stateblock->streamFlags[i] & WINED3DSTREAMSOURCE_INDEXEDDATA)) && stateblock->streamSource[i]) {
|
||||
/* D3d9 could set StreamFreq 0 with (INSTANCEDATA or INDEXEDDATA) and then it is handled as 1. See d3d9/tests/visual.c-> stream_test() */
|
||||
if(stateblock->streamFreq[i] == 0){
|
||||
numInstances = 1;
|
||||
} else {
|
||||
numInstances = stateblock->streamFreq[i]; /* use the specified number of instances from the first matched stream. See d3d9/tests/visual.c-> stream_test() */
|
||||
}
|
||||
numInstances = inst;
|
||||
break; /* break, bacause only the first suitable value is interesting */
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue