Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция D3dValidateTextureStageState возвращает количество проходов, в которых оборудование может выполнять операции смешения, указанные в текущем состоянии.
Синтаксис
LPD3DHAL_VALIDATETEXTURESTAGESTATECB Lpd3dhalValidatetexturestagestatecb;
DWORD Lpd3dhalValidatetexturestagestatecb(
LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA unnamedParam1
)
{...}
Параметры
unnamedParam1
pvtssd [in]
Указывает на структуру D3DHAL_VALIDATETEXTURESTAGESTATEDATA, содержащую сведения, необходимые драйверу для определения и возврата количества проходов, необходимых для выполнения операций смешения.
Возвращаемое значение
D3dValidateTextureStageState возвращает один из следующих кодов обратного вызова:
Замечания
Драйверы Microsoft Direct3D, поддерживающие текстирование, должны реализовать D3dValidateTextureStageState.
Реализация этой функции драйвера должна оценить текущее состояние текстуры для всех этапов текстур, связанных с контекстом. Если оборудование драйвера может выполнять указанные операции смешения, драйвер должен вернуть количество передач данных о состоянии, необходимых оборудованию. Если оборудование не может выполнять указанные операции смешения, драйвер должен вернуть один из следующих кодов ошибок в элементе ddrval структуры D3DHAL_VALIDATETEXTURESTAGESTATEDATA на pvtssd:
| Код ошибки | Значение |
|---|---|
| D3DERR_CONFLICTINGTEXTUREFILTER | Оборудование не может одновременно выполнять трилинейную фильтрацию и мультитекстирование. |
| D3DERR_TOOMANYOPERATIONS | Оборудование не может обрабатывать указанное количество операций. |
| D3DERR_UNSUPPORTEDALPHAARG | Оборудование не поддерживает указанный альфа-аргумент. |
| D3DERR_UNSUPPORTEDALPHAOPERATION | Оборудование не поддерживает указанную альфа-операцию. |
| D3DERR_UNSUPPORTEDCOLORARG | Оборудование не поддерживает указанный аргумент цвета. |
| D3DERR_UNSUPPORTEDCOLOROPERATION | Оборудование не поддерживает указанную операцию цвета. |
| D3DERR_UNSUPPORTEDFACTORVALUE | Оборудование не поддерживает D3DTA_TFACTOR больше 1.0. |
| D3DERR_WRONGTEXTUREFORMAT | Оборудование не поддерживает текущее состояние в выбранном формате текстуры. |
Direct3D вызывает D3dValidateTextureStageState в ответ на запрос приложения с помощью вызова IDirect3Device7::ValidateDevice. Число проходов, возвращаемых драйвером, распространяется обратно в приложение, которое затем может решить, будет ли он продолжать отрисовку с помощью текущего состояния или если он должен изменить операции смешивания, чтобы ускорить отрисовку или отрисовку на всех. Нет ограничений на количество проходов, которые может вернуть драйвер.
Драйвер, возвращающий несколько проходов, отвечает за правильное выполнение передачи всех состояний и примитивных данных при отрисовке.
Запросы, которые, скорее всего, завершаются ошибкой D3dValidateTextureStageState:
Использование диффузных итерированных значений в качестве ARG или операции BLENDDIFFUSE поддерживается на текущем оборудовании. Многие части могут вводить только итерированные данные цвета на последнем этапе операции текстуры.
Попытка указать текстуру для каждого этапа в качестве arg1 в предпочтении arg2.
Попытка использовать диффузные или скалярные значения на произвольных этапах многотекстового смешивания. Для многих карточек эти значения можно использовать только в окончательном состоянии смешения текстур; для других, только на первом этапе.
Попытка сделать больше в первой текстуре, чем просто реплицировать альфа-каналы в цветовые каналы или инвертировать входные данные. Для многих карточек единицы смешивания, связанные с первой текстурой, не могут обрабатывать операции более сложными, чем эти. Приведенные ниже примеры пытаются использовать только единицу смешения второй текстуры, если это возможно. Предполагается, что первая единица находится в состоянии по умолчанию в примерах.
dev.SetTextureStageState( n, D3DTSS_COLORARG1, D3DTA_TEXTURE ); * dev.SetTextureStageState( n, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); *Выполнение операций для выходных альфа-каналов, которые являются более сложными, чем или существенно отличаются от операций, указанных для цветового канала, менее вероятно, будут поддерживаться.
Попытка одновременного использования D3DTA_TFACTOR и D3DTA_DIFFUSE. Некоторые аппаратные средства не поддерживают это.
Попытка одновременного использования нескольких текстур и MIP сопоставленной трилинейной фильтрации. Многие карточки одновременно не поддерживают эти операции. Если трилинейная фильтрация была запрошена для текстуры, связанной с многотекстовых операций, и она завершает проверку, отключите трилайнар и повторите попытку. В этом случае вместо этого лучше всего выполнять многопассную отрисовку.
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Настольный |
| заголовка | d3dhal.h (include D3dhal.h) |