Hello,<br><br><pre>+<br>+    /* D3DXVec3ProjectArray */<br>+    exp_vec[1].x = 1089.554199f; exp_vec[1].y = -226.590622f; exp_vec[1].z = 0.215273f;<br>+    exp_vec[2].x = 1068.903320f; exp_vec[2].y =  103.085129f; exp_vec[2].z = 0.183050f;<br>
+    exp_vec[3].x = 1051.778931f; exp_vec[3].y =  376.462250f; exp_vec[3].z = 0.156329f;<br>+    exp_vec[4].x = 1037.348877f; exp_vec[4].y =  606.827393f; exp_vec[4].z = 0.133813f;<br>+    exp_vec[5].x = 1025.023560f; exp_vec[5].y =  803.591248f; exp_vec[5].z = 0.114581f;<br>
+    D3DXVec3ProjectArray((D3DXVECTOR3*)(out_vec + 1), sizeof(D3DXVECTOR4), (CONST D3DXVECTOR3*)inp_vec, sizeof(D3DXVECTOR4), &amp;viewport, &amp;projection, &amp;view, &amp;world, ARRAY_SIZE);<br>+    compare_index(exp_vec, out_vec, 0);<br>
+    todo_wine {<br>+        /* D3DXVec3Project returns slightly ``wrong&#39;&#39; values here. */<br>+        compare_index(exp_vec, out_vec, 1);<br>+        compare_index(exp_vec, out_vec, 2);<br>+        compare_index(exp_vec, out_vec, 3);</pre>
<br><br>Are all the relative errors &lt;1%?<br>You are looking for an absolute error &lt; 0.0001 for numbers &gt;1000. It is too much precision. One should check the relative error, that is <br>Re=(expected-got)/got<br>And we say that the test is ok if Re&lt;0.01<br>
<br>David<br>