I have 2 questions regarding the various shader constant functions in IDirect3D9Device, e.g. SetVertexShaderConstantB/F/I.
1. Is my assumption correct that both SetVertexShaderConstantF and SetVertexShaderConstantI simply stuff a multiple of 128 bit into one or more constant registers, and there is not actual difference between them? That means, if I had a float and cast a pointer to them to int*, I could use SetVertexShaderConstantI instead of SetVertexShaderConstantF with the same result. (No, I'm not actually going to do this; I just try to understand what goes on behind the scenes.)
2. What does SetVertexShaderConstantB do? How many bits in the constant register are taken for one BOOL? Both SetVertexShaderConstantF and SetVertexShaderConstantI take 4 values or a multiple of them; why is this different for SetVertexShaderConstantB?