+63.6
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
D3DXINLINE
D3DXVECTOR2::D3DXVECTOR2( CONST FLOAT *pf )
{
#ifdef D3DX_DEBUG
if(!pf)
return;
#endif
x = pf[0];
y = pf[1];
}
D3DXINLINE
D3DXVECTOR2::D3DXVECTOR2( CONST D3DXFLOAT16 *pf )
{
#ifdef D3DX_DEBUG
if(!pf)
return;
#endif
D3DXFloat16To32Array(&x, pf, 2);
}
D3DXINLINE BOOL
D3DXVECTOR3::operator == ( CONST D3DXVECTOR3& v ) const
{
return x == v.x && y == v.y && z == v.z;
}
D3DXINLINE BOOL
D3DXVECTOR3::operator != ( CONST D3DXVECTOR3& v ) const
{
return x != v.x || y != v.y || z != v.z;
}
Во-первых, классный "режим отладки". Если D3DX_DEBUG определён, то при нулевом указателе pf происходит тихий возврат. Совершенно, так сказать, по-английски. А вот анализ второй функции показывает, что данный исходник вообще не получится собрать с D3DX_DEBUG. Наглядная иллюстрация вреда тупого копипаста. Определения операторов == и != демонстрируют, как не надо сравнивать вещественные числа.
Кто же автор этого безобразия? Имя не известно, зато известно место работы. Ибо этот "код" полностью представлен в файле d3dx9math.inl от компании Microsoft.
Запостил: whiskey,
22 Марта 2010
SkaarjZR 22.03.2010 12:09 # +0.4
guest 22.03.2010 13:27 # +0.6
SkaarjZR 22.03.2010 14:39 # +0.4
Читать же не удобно.
guest 22.03.2010 15:01 # +0.6
макросов в коде как бы и нет
SkaarjZR 22.03.2010 16:11 # −0.4
guest 22.03.2010 14:44 # 0
guest 25.03.2010 03:36 # 0
guest 22.03.2010 12:52 # +0.6
guest 22.03.2010 14:26 # +0.6
guest 22.03.2010 15:04 # −0.4
его очень удобно инкапсулировать в какие угодно архитектуры.
а директ3д - кривое негибкое месиво
жалко, что производители видеокарты щас в тандеме с МС...
guest 03.04.2010 11:08 # 0
guest 22.03.2010 23:55 # 0
guest 23.03.2010 18:36 # +0.4
guest 23.03.2010 18:37 # −2
guest 31.03.2010 08:58 # +0.4
guest 31.03.2010 08:58 # +0.2
guest 31.03.2010 08:59 # +0.4
guest 01.04.2010 00:04 # +0.2
И почему исходник не получится собрать с D3DX_DEBUG, поясните пожалуйста.
Сравнение вещественных чисел на точное совпадение - вполне допустимая операция, будет определять копии.
whiskey 01.04.2010 07:25 # 0
D3DXINLINE
D3DXVECTOR2::D3DXVECTOR2( FLOAT fx, FLOAT fy )
{
#ifdef D3DX_DEBUG
if(!pf)
return;
#endif
x = fx;
y = fy;
}
guest 02.04.2010 21:56 # 0