Поделиться через


Автоматически созданные координаты текстур (Direct3D 9)

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

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

Настройка автоматически созданных координат текстуры

В C++состояние D3DTSS_TEXCOORDINDEX стадии текстуры (из перечисленного типа D3DTEXTURESTAGESTATETYPE) управляет тем, как система создает координаты текстур.

Обычно это состояние указывает системе использовать определенный набор координат текстур, закодированных в формате вершины. При включении флагов D3DTSS_TCI_CAMERASPACENORMAL, D3DTSS_TCI_CAMERASPACEPOSITION или D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR в значение, которое вы назначаете этому состоянию, поведение системы совершенно отличается. Если любой из этих флагов присутствует, этап текстуры игнорирует координаты текстуры в формате вершины в пользу координат, создаваемых системой. Значения для каждого флага показаны в следующем списке.

  • D3DTSS_TCI_CAMERASPACENORMAL

    Используйте обычную вершину, преобразованную в пространство камеры, в качестве координат текстуры ввода.

  • D3DTSS_TCI_CAMERASPACEPOSITION

    Используйте позицию вершины, преобразованную в пространство камеры, в качестве координат текстуры ввода.

  • D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR

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

Флаги индексов координат текстуры являются взаимоисключающими. В этом примере используется следующее:

  • Позиция вершины (в пространстве камеры) в качестве координат входной текстуры для данного этапа текстуры
  • Режим оболочки, заданный в состоянии D3DRENDERSTATE_WRAP1 отрисовки
// Assume d3dDevice is a valid pointer to an IDirect3DDevice9 interface
d3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 
                                   D3DTSS_TCI_CAMERASPACEPOSITION | 1);

Автоматически созданные координаты текстуры наиболее полезны в качестве входных значений для преобразования координат текстуры или для устранения необходимости вычисления векторов с тремя элементами для карт кубической среды.

Сопоставление sphere использует предварительно компилированную (во время модели) карту текстур, содержащую всю среду, как отражается хрома. Direct3D имеет функцию создания текстуры с помощью состояния отрисовки D3DTSS_TCI_CAMERASPACENORMAL, которая принимает нормальное состояние вершины в пространстве камеры и помещает его через преобразование текстуры для создания координат текстуры.

обработка координат текстуры

преобразования координат текстуры (Direct3D 9)

сопоставление кубической среды (Direct3D 9)