Какова спецификация значений для набора вершин в DirectX? - PullRequest
0 голосов
/ 13 февраля 2020

Просто быстрый вопрос. Я изучаю DirectX, и я столкнулся с конфигурацией массива значений вершин. Это делается следующим образом:

VertexPos vertices[] =
{
    { XMFLOAT3(  halfWidth,  halfHeight, 1.0f ), XMFLOAT2( 1.0f, 0.0f ) },
    { XMFLOAT3(  halfWidth, -halfHeight, 1.0f ), XMFLOAT2( 1.0f, 1.0f ) },
    { XMFLOAT3( -halfWidth, -halfHeight, 1.0f ), XMFLOAT2( 0.0f, 1.0f ) },

    { XMFLOAT3( -halfWidth, -halfHeight, 1.0f ), XMFLOAT2( 0.0f, 1.0f ) },
    { XMFLOAT3( -halfWidth,  halfHeight, 1.0f ), XMFLOAT2( 0.0f, 0.0f ) },
    { XMFLOAT3(  halfWidth,  halfHeight, 1.0f ), XMFLOAT2( 1.0f, 0.0f ) },
};

Затем мы передаем это в функцию создания буфера вершин с помощью компонента средства «подресурс». Мой вопрос заключается в том, какова природа, с точки зрения геометрии, системы координат, используемой в отношении этих вышеупомянутых значений. Во-вторых, в чем смысл самих ценностей? Например, я сталкиваюсь с этим в конкретном c примере главы:

VertexPos vertices[] =
{
    { XMFLOAT3(  1.0f,  1.0f, 1.0f ), XMFLOAT2( 1.0f, 1.0f ) },
    { XMFLOAT3(  1.0f, -1.0f, 1.0f ), XMFLOAT2( 1.0f, 0.0f ) },
    { XMFLOAT3( -1.0f, -1.0f, 1.0f ), XMFLOAT2( 0.0f, 0.0f ) },

    { XMFLOAT3( -1.0f, -1.0f, 1.0f ), XMFLOAT2( 0.0f, 0.0f ) },
    { XMFLOAT3( -1.0f,  1.0f, 1.0f ), XMFLOAT2( 0.0f, 1.0f ) },
    { XMFLOAT3(  1.0f,  1.0f, 1.0f ), XMFLOAT2( 1.0f, 1.0f ) },
};

Это может создать прямоугольник / квадрат, охватывающий все окно, поверх которого я накладываю текстуру. Однако, если экстент ширины и высоты задан равным 2, о чем свидетельствует предыдущий фрагмент, как получается, что первоначальный пример работает, учитывая, что их значения равны 128 и 64? Чтобы упростить, какова природа системы координат специально для определения позиций вершин и какие значения используются для определения этих позиций?

...