2010-02-17 3 views
1

В Direct3D10 трафарет чтение/запись маска байт (от 0x00 до 0xFF)трафарета Буфер чтения/записи маски

В Direct3D9 трафарет чтение/запись маска является INT (от 0x00000000 до 0xFFFFFFFF)

Вопрос:

Как маска для чтения/записи трафарета в Direct3D10 относится к Direct3D9?

Direct3D10 | 0x00FFFFFF или Direct3D10 | 0xFFFFFF00?

И еще один вопрос:

Почему Direct3D9 один является 32-битное целое, когда буфер трафарета может быть не более 8 бит? o.O

Спасибо.

ответ

3

Direct3D10 | 0xFFFFFF00

Наименее значимые биты являются релевантными в D3D9, документы описывают операции трафарета с точки зрения DWORD, но в конечном итоге буфер трафарета хранит только один байт, поэтому важно, чтобы это был только наименее значимый байт маски ,

Причина, по которой D3D9 использует DWORD, заключается в том, что значение задается с помощью SetRenderState, которое принимает два параметра, перечисление D3DRENDERSTATETYPE, определяющее измененное состояние и значение DWORD. Поэтому все состояния рендеринга должны использовать значение DWORD независимо от того, как они в конечном счете используются. В некоторых случаях это означает выполнение reinterpret_cast по числу с плавающей запятой. Для маски трафарета это означает, что нужно передать 32-битное значение, где действительно нужны только наименее значимые 8 бит. D3D10 устанавливает состояния через типизированные структуры и поэтому избегает этой проблемы.

+0

Спасибо за ответ !!! – feal87

Смежные вопросы