Метод 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 |