Oh I'm sorry. I now see what you mean, you were talking about the register index parameter to Set*ShaderConstantF? Yes, that should be changed. I will submit updated patches shortly.
Travis. On Fri, Jan 21, 2011 at 3:22 PM, Travis Athougies <iamm...@gmail.com> wrote: > matrix + i will advance by the size of 1 D3DXMATRIX, since matrix is a > pointer to a D3DXMATRIX. Michael is right, I thought the code was > clearer with the pointer arithmetic, but I now see more people are > familiar with the array indexing style. > > Travis. > > On Fri, Jan 21, 2011 at 8:47 AM, Matteo Bruni <matteo.myst...@gmail.com> > wrote: >> 2011/1/21 Michael Stefaniuc <mstef...@redhat.com>: >>> On 01/21/2011 06:56 AM, Travis Athougies wrote: >>>> On Thu, Jan 20, 2011 at 7:27 AM, Matteo Bruni<matteo.myst...@gmail.com> >>>> wrote: >>>>> >>>>> 2011/1/20 Travis Athougies<iamm...@gmail.com>: >>>>>> >>>>>> + /* D3DXMATRIX is a union, one of whose elements is an >>>>>> array, so it can be cast to a float pointer */ >>>>>> + if (is_vertex_shader(This->desc.Version)) >>>>>> + IDirect3DDevice9_SetVertexShaderConstantF(device, >>>>>> desc.RegisterIndex + i, (float *)(matrix + i), >>>>>> + desc.RegisterCount); >>>>>> + else >>>>>> + IDirect3DDevice9_SetPixelShaderConstantF(device, >>>>>> desc.RegisterIndex + i, (float *)(matrix + i), >>>>>> + desc.RegisterCount); >>>>> >>>>> Can't you just pass matrix->m[i] as parameter, instead of that cast? >>>>> >>>> >>>> Uh no. If I were to do that, matrix->m[1] would be the second row, not >>>> the second matrix. I'm trying to get at the second matrix. To >>>> illustrate this, suppose the matrix were at 0x8000 (not going to >>>> happen, but just pretend). matrix->m[1] would be at 0x8010, since >>>> floats are 4 bytes. However, the next matrix is actually at 0x8040 >>>> (since sizeof(float) * 16 [the number of elements in the matrix] = >>>> 64). >>> >>> So you want a pointer to the first element of the "i"th matrix, right? >>> &matrix[i]._11 >>> No cast, no explicit pointer arithmetic. >>> >> >> Oh, right, I misread that (and Michael's suggestion is good). But then >> I would expect the register index to be incremented by >> desc.RegisterCount at each iteration. RegisterCount is supposedly 4, >> but what if it is not? This calls for some SetMatrixArray tests. >> > > > > -- > Travis Athougies > -- Travis Athougies