Stop vertex shader constants from being set at the same time as the
vertex shader when a stateblock is applied.
This commit is contained in:
parent
d4dff29081
commit
7df17cecce
|
@ -3635,6 +3635,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_GetVertexShader(IWineD3DDevice *iface, IWineD3
|
||||||
return D3D_OK;
|
return D3D_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* FIXME: Vertex shaders don't work properly with stateblocks */
|
||||||
#define GET_SHADER_CONSTANT(_vertexshaderconstant, _count, _sizecount) \
|
#define GET_SHADER_CONSTANT(_vertexshaderconstant, _count, _sizecount) \
|
||||||
int count = min(_count, MAX_VSHADER_CONSTANTS - (StartRegister + 1)); \
|
int count = min(_count, MAX_VSHADER_CONSTANTS - (StartRegister + 1)); \
|
||||||
if (NULL == pConstantData || count < 0 /* || _count != count */ ) \
|
if (NULL == pConstantData || count < 0 /* || _count != count */ ) \
|
||||||
|
|
|
@ -346,12 +346,14 @@ should really perform a delta so that only the changes get updated*/
|
||||||
toDo = toDo->next;
|
toDo = toDo->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (This->changed.vertexShader) {
|
if (This->set.vertexShader && This->changed.vertexShader) {
|
||||||
IWineD3DDevice_SetVertexShader(pDevice, This->vertexShader);
|
IWineD3DDevice_SetVertexShader(pDevice, This->vertexShader);
|
||||||
/* TODO: Vertex Shader Constants */
|
/* TODO: Vertex Shader Constants */
|
||||||
|
#if 0 /* FIXME: This isn't the correct place to set vs constants (The Fur demo fails) */
|
||||||
IWineD3DDevice_SetVertexShaderConstantB(pDevice, 0 , This->vertexShaderConstantB , MAX_VSHADER_CONSTANTS);
|
IWineD3DDevice_SetVertexShaderConstantB(pDevice, 0 , This->vertexShaderConstantB , MAX_VSHADER_CONSTANTS);
|
||||||
IWineD3DDevice_SetVertexShaderConstantI(pDevice, 0 , This->vertexShaderConstantI , MAX_VSHADER_CONSTANTS);
|
IWineD3DDevice_SetVertexShaderConstantI(pDevice, 0 , This->vertexShaderConstantI , MAX_VSHADER_CONSTANTS);
|
||||||
IWineD3DDevice_SetVertexShaderConstantF(pDevice, 0 , This->vertexShaderConstantF , MAX_VSHADER_CONSTANTS);
|
IWineD3DDevice_SetVertexShaderConstantF(pDevice, 0 , This->vertexShaderConstantF , MAX_VSHADER_CONSTANTS);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue