Как правильно инициализировать XMVECTOR в конструкторе?

У меня проблемы с поиском надежной документации о том, что происходит, когда вы вызываете конструктор по умолчанию в 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()),
    ...
{
}

Это выглядит некрасиво, но, возможно, правильно.

Спасибо за чтение и спасибо за любую помощь.

1 ответ

Решение

Я думаю, что ваш путь правильный, если вы думаете, что он уродлив, вы можете поместить его в тело конструктора, хотя он потеряет некоторую производительность, так как инициализация списка вызывает только конструктор копирования. если вы хотите посмотреть, что делает конструктор по умолчанию XMVECTOR, вы можете запустить вашу программу в режиме отладки и посмотреть это в окне просмотра.

Другие вопросы по тегам