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


структура D3DHAL_DP2RESPONSEQUERY (d3dhal.h)

Только DirectX 9.0 и более поздних версий.

Одна или несколько D3DHAL_DP2RESPONSEQUERY структуры анализируются из буфера ответов средой выполнения после того, как среда выполнения вызывает обратный вызов D3dDrawPrimitives2 . Драйвер задает элемент bCommand структуры D3DHAL_DP2RESPONSE D3DDP2OP_RESPONSEQUERY, чтобы указать, что ответы на ранее выданные запросы доступны в буфере ответов.

Синтаксис

typedef struct _D3DHAL_DP2RESPONSEQUERY {
  DWORD dwQueryID;
  DWORD dwSize;
} D3DHAL_DP2RESPONSEQUERY;

Члены

dwQueryID

Определяет запрос, для которого доступны данные ответа.

dwSize

Указывает размер (в байтах) сведений о запросе, возвращаемых драйвером в среду выполнения.

Комментарии

Среда выполнения использует команду D3DDP2OP_ISSUEQUERY для запроса процесса драйвера. Обратный вызов D3dDrawPrimitives2 драйвера должен обрабатывать wPrimitiveCount D3DHAL_DP2ISSUEQUERY структуры запросов из буфера команд. Значение wPrimitiveCount указывается в структуре D3DHAL_DP2COMMAND . Драйвер анализирует эти структуры запросов и преобразует их в команды, относящиеся к оборудованию.

Если ранее отправленные запросы с использованием операции D3DDP2OP_ISSUEQUERY завершены, драйвер устанавливает размер буфера ответов в элементе dwErrorOffset структуры D3DHAL_DRAWPRIMITIVES2DATA и задает для элемента ddrval D3DHAL_DRAWPRIMITIVES2DATA значение D3D_OK для успешного завершения. Драйвер также перезаписывает буфер входящих команд буфером исходящего ответа. За каждым D3DHAL_DP2RESPONSEQUERY в буфере ответов следуют следующие данные, связанные с запросом:

  • BOOL для D3DQUERYTYPE_EVENT. Прежде чем отвечать с D3DDP2OP_RESPONSEQUERY для события, драйвер должен убедиться, что графический процессор (GPU) завершил обработку всех D3DHAL_DP2OPERATION операций, связанных с событием. То есть драйвер отвечает только после возникновения состояния ISSUE_END события. При ответе драйвер должен всегда задавать значение BOOL события в значение TRUE .
  • DWORD для D3DQUERYTYPE_OCCLUSION. Драйвер задает этому параметру DWORD число пикселей, для которого z-тест прошел для всех примитивов между началом и концом запроса. Если буфер глубины имеет несколько дискретных значений, драйвер определяет количество пикселей из числа выборок. Однако если устройство отображения поддерживает точность z-теста с несколькими выборками, преобразование в число пикселей, как правило, следует округлить вверх. Затем приложение может проверка результат окклюзии против 0, чтобы фактически означать "полностью occluded". Драйверы, преобразующие количества с несколькими дискретными данными в пиксели, должны обнаруживать целевые изменения множественной выборки и продолжать вычислять результаты запроса соответствующим образом.
  • D3DDEVINFO_VCACHE структура для D3DQUERYTYPE_VCACHE.

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

Требования

Требование Значение
Заголовок d3dhal.h (включая D3dhal.h)

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

D3DDEVINFO_VCACHE

D3DDP2OP_ISSUEQUERY

D3DDP2OP_RESPONSEQUERY

D3DHAL_DP2COMMAND

D3DHAL_DP2ISSUEQUERY

D3DHAL_DP2RESPONSE

D3DHAL_DRAWPRIMITIVES2DATA

D3dDrawPrimitives2