d3dx9: Implement D3DXFloat16to32Array and D3DXFloat32to16Array.
Stefan Dösinger
stefandoesinger at gmx.at
Fri Feb 11 15:20:10 CST 2011
Am Freitag 11 Februar 2011, 20:48:58 schrieb Misha Koshelev:
> + if (*((unsigned int *)&in) == 0x00000000) return 0x0000;
> + if (*((unsigned int *)&in) == 0x80000000) return 0x8000;
Thinking about it, there's something about this line that is not so nice: It
relies on the actual encoding of the float, which may technically be platform
specific if there's a CPU that implements non-IEEE- 754 floats.
You could try something like this(pseudo code, I removed the *s)
if(in == 0.0)
{
if(sign(1.0 / in) == positive) return 0x0000;
else return 0x8000;
}
The idea is that 1.0 / 0.0 returns Inf and 1.0 / -0.0 -Inf. I may be mistaken
about that though.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20110211/c883e20e/attachment.pgp>
More information about the wine-devel
mailing list