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


Автоматически созданные координаты текстуры (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);

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

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

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

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

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