ID3D10Texture2D прокрутить содержимое - PullRequest
0 голосов
/ 21 марта 2012

Я начинающий пользователь технологий DirectX.

Как прокрутить содержимое ID3D10Texture2D?используя bitblt.Что-то вроде BitBlt в контексте устройства GDI, где src и dst hdc одинаковы.

У меня есть ID3D10Texture2D из IDXGISurface, прокрутка которого является моей настоящей целью, но я не смог найти ничего в API-интерфейсе dxgi.

1 Ответ

0 голосов
/ 22 марта 2012

Прокрутка довольно проста. Чтобы нарисовать всю текстуру, вы используете текстуры от 0, 0 до 1,1. Теперь вместо этого добавьте 0.5 к каждой координате x, чтобы вы получили следующее:

0.5, 0.0----------------1.5, 0.0
   |                       |
   |                       |
   |                       |
   |                       |
   |                       |
0.5, 1.0----------------1.5, 1.0

Теперь вы увидите, что текстура сместилась на половину ширины вправо.

Надеюсь, это поможет!

Редактировать : Если вы не можете выполнить вышеизложенное, вы можете слегка застрять, так как вы не можете читать и писать с одной и той же текстуры (хорошо, что на некоторых драйверах вы можете, но это не определено). Итак, у вас есть 2 варианта.

1) Создайте текстуру цели рендеринга и затем визуализируйте (как указано выше) исходную текстуру в новую цель рендеринга с вашим смещением. Затем текстуру с целевой текстурой рендеринга.

2) Заблокируйте (сопоставьте) текстуру и скопируйте отдельные байты вокруг в новые позиции (это будет очень медленно из-за копирования шины PCIe).

Так что в идеале вы должны поступить так, как я предлагаю в 1. Однако для лучшей производительности вы должны установить «прокручиваемый вершинный шейдер текстуры», где вы устанавливаете количество прокрутки как константу, а затем смещаете координаты текстуры для каждой вершины как первоначально описано. Это, безусловно, самый эффективный метод.

...