У меня проблемы с поиском надежной документации о том, что происходит, когда вы вызываете конструктор по умолчанию в XMVECTOR.
MSDN говорит, что конструктор по умолчанию XMMATRIX не инициализирует переменные в 0 (http://msdn.microsoft.com/en-us/library/windows/desktop/ee420023(v=vs.85).aspx). Так что я чувствую, что то же самое относится и к XMVECTOR, но, к сожалению, я не могу найти это подтверждение на сайте MSDN.
Вернуться к исходному вопросу:
// Trackball.h
class Trackball
{
...
XMVECTOR m_eye;
XMVECTOR m_position;
XMVECTOR m_up;
XMVECTOR m_rotateStart;
XMVECTOR m_rotateEnd;
...
}
// Trackball.cpp
Trackball::Trackball(void) :
...
m_eye(),
m_rotateStart(),
m_rotateEnd(),
m_zoomStart(),
m_zoomEnd(),
m_panStart(),
m_panEnd(),
...
{
}
Но это просто использует конструктор по умолчанию для инициализации переменной правильно? Так что, если вышеприведенное предположение о том, что конструктор по умолчанию не инициализирует члены XMVECTOR, выполняется, тогда я должен делать это вместо этого ?:
// Trackball.cpp
Trackball::Trackball(void) :
...
m_eye(XMVectorZero()),
m_rotateStart(XMVectorZero()),
m_rotateEnd(XMVectorZero()),
m_zoomStart(XMVectorZero()),
m_zoomEnd(XMVectorZero()),
m_panStart(XMVectorZero()),
m_panEnd(XMVectorZero()),
...
{
}
Это выглядит некрасиво, но, возможно, правильно.
Спасибо за чтение и спасибо за любую помощь.
Я думаю, что ваш путь правильный, если вы думаете, что он уродлив, вы можете поместить его в тело конструктора, хотя он потеряет некоторую производительность, так как инициализация списка вызывает только конструктор копирования. если вы хотите увидеть, что делает конструктор по умолчанию XMVECTOR, вы можете запустить вашу программу в режиме отладки и посмотреть это в окне просмотра.
Других решений пока нет …