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:
Oliver Stieber 2005-09-19 14:30:34 +00:00 committed by Alexandre Julliard
parent d4dff29081
commit 7df17cecce
2 changed files with 4 additions and 1 deletions

View File

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

View File

@ -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
}
}