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


Метод ID3D10Device::CreateInputLayout (d3d10.h)

Создайте объект макета входных данных для описания входных данных буфера для этапа входного ассемблер.

Синтаксис

HRESULT CreateInputLayout(
  [in]  const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
  [in]  UINT                           NumElements,
  [in]  const void                     *pShaderBytecodeWithInputSignature,
  [in]  SIZE_T                         BytecodeLength,
  [out] ID3D10InputLayout              **ppInputLayout
);

Параметры

[in] pInputElementDescs

Тип: const D3D10_INPUT_ELEMENT_DESC*

Массив входных типов входных данных этапа ассемблер; каждый тип описывается описанием элемента (см . D3D10_INPUT_ELEMENT_DESC).

[in] NumElements

Тип: UINT

Количество типов входных данных в массиве входных элементов.

[in] pShaderBytecodeWithInputSignature

Тип: const void*

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

[in] BytecodeLength

Тип: SIZE_T

Размер скомпилированного шейдера.

[out] ppInputLayout

Тип: ID3D10InputLayout**

Указатель на созданный объект input-layout (см. id3D10InputLayout Interface). Чтобы проверить другие входные параметры, задайте для этого указателя значение NULL и убедитесь, что метод возвращает S_FALSE.

Возвращаемое значение

Тип: HRESULT

Если метод выполнен успешно, код возврата S_OK. Коды ошибок сбоя см. в разделе Коды возврата Direct3D 10 .

Комментарии

После создания объекта макета входных данных его необходимо привязать к этапу ассемблеера ввода перед вызовом API рисования. Пример кода см. в разделе начало работы с этапом Input-Assembler (Direct3D 10).

После создания объекта input-layout из сигнатуры шейдера объект input-layout можно повторно использовать с любым другим шейдером, который имеет идентичную входную сигнатуру (включая семантику). Это может упростить создание объектов макета ввода при работе со многими шейдерами с одинаковыми входными данными.

Если тип данных в объявлении макета ввода не соответствует типу данных в сигнатуре ввода-шейдера, CreateInputLayout создаст предупреждение во время компиляции. Предупреждение заключается в том, чтобы обратить внимание на то, что данные могут быть повторно интерпретированы при чтении из регистра. Вы можете игнорировать это предупреждение (если повторное истолкование является преднамеренным) или сделать типы данных совпадающими в обоих объявлениях, чтобы исключить предупреждение. Общие сведения о правилах преобразования данных описываются правила, применяемые для преобразования типов данных.

Различия между Direct3D 9 и Direct3D 10:

Сопоставление данных вершин с входными данными шейдера с помощью макета ввода — это новый способ выполнения действий в Direct3D 10, который повышает производительность.

В Direct3D 10 данные вершин сопоставляются с входными данными шейдера при создании объекта макета входных данных, тогда как в Direct3D 9 это сопоставление выполнялось во время рисования на основе текущих связанных объявлений вершин, буферов вершин и шейдеров вершин. Это сопоставление при создании объекта макета ввода сокращает или исключает дополнительные операции компоновки для драйверов во время рисования, так как повторное сопоставление больше не требуется.

Требования

   
Целевая платформа Windows
Header d3d10.h
Библиотека D3D10.lib

См. также раздел

Интерфейс ID3D10Device