[PATCH 1/1] d3dx9: Complete test for D3DXCreateSphere. (try 5)

Misha Koshelev misha680 at gmail.com
Mon Jul 26 22:06:38 CDT 2010


On Tue, 2010-07-27 at 05:56 +0300, Octavian Voicu wrote:
> On Tue, Jul 27, 2010 at 5:04 AM, Misha Koshelev <misha680 at gmail.com> wrote:
> > Linking same file in test and main dll: I am not aware of a precedent for
> > this but if there is one of course I would be glad to be shown otherwise.
> 
> On second thought, not sure if it is worth it anyway, there is
> probably not that much to share.
> 
> > Second comment: please pardon if I am misunderstanding but how is what you
> > suggest not simply moving the lookup table calculation from the helper
> > function which we will also use for, at the very least, the cylinder test,
> > inside the actual compute_sphere function itself?
> 
> My observation is that you don't need to precompute *both* tables for
> compute_sphere (you still need to compute the phi table) -- so no, I'm
> not suggesting you move the lookup table calculation from the helper.
> 
> As for the theta table, you only access it by theta.sin[stack] and
> theta.cos[stack] from the inner loop, so you could do something like
> this:
> 
>     /* middle */
>     theta = theta_start;
>     for (stack = 0; stack < stacks - 1; stack++)
>     {
>         sin_theta = sin(theta);
>         cos_theta = cos(theta);
>         for (slice = 0; slice < slices; slice++)
>         {
>             mesh->vertices[vertex].normal.x = sin_theta * phi.cos[slice];
>             mesh->vertices[vertex].normal.y = sin_theta * phi.sin[slice];
>             mesh->vertices[vertex].normal.z = cos_theta;
>             mesh->vertices[vertex].position.x = radius * sin_theta *
> phi.cos[slice];
>             mesh->vertices[vertex].position.y = radius * sin_theta *
> phi.sin[slice];
>             mesh->vertices[vertex].position.z = radius * cos_theta;
>             vertex++;
>             /* ... */
>         }
>         /* ... */
>         theta += theta_step;
>     }
> 
> Anyway, this is a minor issue. Although the above is a bit faster
> (because you don't need to allocate an extra table and then access it
> in memory), it's not very relevant for the tests.
> 
> I only mentioned it because I noticed you didn't update the
> D3DXCreateSphere implementation to use tables yet, so maybe you use
> this when you do. If some app would call D3DXCreateSphere very often,
> then it might be worth it.
No you're right. Thank you. This would result in a speed increase and I
will definitely consider adding it into the D3DXCreateSphere
implementation.

As you mention yourself, its not really an issue for the tests though.

> 
> Keep up the good work!
Thanks :) I still wish I could figure out that teapot... oh well maybe
in some time.

Misha

> 
> Octavian





More information about the wine-devel mailing list