D3DVALUE— это основной тип данных в Direct3D. Тип D3DVALUE объявлен через тип float и применяется в Direct3D для представления координат вершин, интенсивности освещения, скорости вращения и т.д.
В 32-разрадных версиях C++, таких как Visual C++, числа для которых явно не указан тип, воспринимаются как числа типа int (если десятичная точка отсутствует) или double (если в числе есть десятичная точка). Другими словами, если в вашей программе встречается неспецифицированное число с плавающей точкой, компилятор выделит для него восемь байт (как для числа двойной точности), а не четыре (как для числа с плавающей точкой одинарной точности). По этой причине, а также из-за того, что код, использующий тип D3DVALUE будет более переносимым, в программах Direct3D часто используются значения типа D3DVALUE. Если вы уверены, что программа не будет переноситься на другие платформы, и вам неприятно наличие многочисленных приведений к типу D3DVALUE в коде (что довольно понятно), применяйте для указания компилятору типа значения суффикс «f» (в этом случае вы должны использовать десятичную точку). Приведем ряд примеров:
d3dfunction((D3DVALUE)3) // стандартный и безопасный способ d3dfunction((D3DVALUE)3.0) // стандартный и безопасный способ d3dfunction(3) // воспринимается как int и вызывает // предупреждение компилятора d3dfunction(3.0) // воспринимается как double и // вызывает предупреждение компилятора d3dfunction(3.0f) // допустимо, но уменьшает // переносимость d3dfunction(3f) // недопустимо, должна использоваться // десятичная точка