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;
|
||||
}
|
||||
|
||||
/* FIXME: Vertex shaders don't work properly with stateblocks */
|
||||
#define GET_SHADER_CONSTANT(_vertexshaderconstant, _count, _sizecount) \
|
||||
int count = min(_count, MAX_VSHADER_CONSTANTS - (StartRegister + 1)); \
|
||||
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;
|
||||
}
|
||||
|
||||
if (This->changed.vertexShader) {
|
||||
if (This->set.vertexShader && This->changed.vertexShader) {
|
||||
IWineD3DDevice_SetVertexShader(pDevice, This->vertexShader);
|
||||
/* 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_SetVertexShaderConstantI(pDevice, 0 , This->vertexShaderConstantI , MAX_VSHADER_CONSTANTS);
|
||||
IWineD3DDevice_SetVertexShaderConstantF(pDevice, 0 , This->vertexShaderConstantF , MAX_VSHADER_CONSTANTS);
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue