Есть ли DirectX эквивалентный OpenGL glLogicOp? - PullRequest
1 голос
/ 26 февраля 2010

OpenGL позволяет вам установить логическую побитовую операцию (ИЛИ, XOR и т. Д.), Которая будет выполняться при записи фрагмента в кадровый буфер.

Я бы хотел выполнить быструю вокселизацию сцены (как видно из статьи Эльмара Эйземана), где я использую один пиксель кадрового буфера для хранения 32 фрагментов. К сожалению, я работаю в среде DirectX 9. Если я что-то не упустил, D3D не поддерживает побитовые операции, подобные этой.

Первое, что пришло в голову, это аддитивное смешивание, но это приведет к неверным результатам. Есть идеи?

Ответы [ 2 ]

1 голос
/ 26 февраля 2010

Нет, в DirectX 9 нет эквивалента.

Вы можете эмулировать его с помощью шейдеров. Но для этого потребуется Shader Model 4.0, так что DirectX 10 (я сделал это с помощью GS / PS и текстурных массивов). Я думаю, что DirectX 11 Compute Shaders будет иметь смысл сейчас, потому что реализация будет намного проще и эффективнее.

0 голосов
/ 02 марта 2010

Большая проблема в том, что DirectX настроен для обработки поплавков по конвейеру (вплоть до записи в текстуру). Что бы вы ожидали, что побитовая операция будет выполняться между 2 числами? Вряд ли он будет делать то, что вы ожидаете.

Хотя карты вполне могут поддерживать ints, эта функция «скрыта» от вас, так же, как и работа DirectX. В результате вы не могли гарантировать, что определенная карта поддерживает это.

Чего именно вы пытаетесь достичь? Там может быть другой способ сделать то, что вы после.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...