Having some trouble implementing D3DXComputeNormals... any hints/advice?

Misha Koshelev misha680 at gmail.com
Mon Jul 12 18:11:02 CDT 2010

On Mon, 2010-07-12 at 22:54 +0200, Henri Verbeet wrote:
> On 12 July 2010 22:43, Misha Koshelev <misha680 at gmail.com> wrote:
> > Thank you Henri for the explanation. In fact it seems that this flag is
> > default on D3DXComputeTangentFrameEx:
> >
> >                Weight the direction of the computed per-vertex normal
> >                or partial derivative vector according to the areas of
> >                triangles attached to that vertex. Mutually exclusive
> >                with D3DXTANGENT_WEIGHT_EQUAL.
> >
> Actually, looking at the docs for D3DXComputeTangentFrameEx() a bit
> more closely, it says in the description for dwOptions that if neither
> it does indeed weight the normals by the the angle of the outgoing
> edges for that face.


I love your polite way of saying RTFM ;)

Anyway you are correct, I have made a patch:

Next steps I believe are:
* Add tests for D3DXCreateCylinder with unequal radii
* Implement D3DXCreateCylinder
* Implement D3DXComputeNormals

One minor note about the patch - the compute_normal function is adapted
from a book, which I have credited in a comment

 * Adapted from pg. 246, Frank D Luna, "Introduction to 3D Game
Programming with Direct X 9.0c:
 * A Shader Approach (Wordware Game and Graphics Library) [Paperback],"

The function differs from the book in the:
* name
* parameters all on one line rather than separate lines (minor)
* use of D3DXVec3Subtract rather than operator- (only available in C++ I
* name of output parameter is normal vs out

I believe this should be okay for inclusion of this function. Plus it is
quite basic. However, if this is not ok let me know (I honestly can't
imagine such a case though...)


More information about the wine-devel mailing list