Создайте текстуру D3DX из растрового изображения или графики - PullRequest
1 голос
/ 28 февраля 2011

Я пытаюсь создать текстуру, используя DirectX 9 в Delphi 2007.

Мне известны следующие функции:

D3DXCreateTextureFromFile 
D3DXCreateTextureFromFileEx
D3DXCreateTextureFromResource
D3DXCreateTextureFromFileInMemory

но мне нужно, чтобы текстуры были динамическими (и быстрыми). Есть ли функция для создания текстуры из TBitmap?

Подробнее:
Моя конечная цель - использовать DirectX для отображения видео, выбранного пользователем. DirectX необходим для наложения текста поверх видео, а также для перехода между видео, когда пользователь выбирает следующий. Я использую компонент, который воспроизводит видео и выдает растровое изображение для каждого кадра, и это то, что я хотел бы использовать для текстуры.

1 Ответ

0 голосов
/ 01 марта 2011

Вы можете просто заблокировать D3D текстуру и затем использовать GetDIBits на TBitmap.Handle .

Однако вы тратите на это много времени.Было бы гораздо лучше заблокировать текстуру и напрямую загрузить изображение в текстуру D3D.

Это означает использование внешней библиотеки загрузки изображений, однако.

Вы также можете обнаружить, что используя D3DXLoadSurfaceFromFile значительно быстрее, так как вам не нужно каждый раз создавать текстуру.Просто возьмите поверхность верхнего уровня и загрузите на нее текстуру.

Однако, что бы вы ни делали, загрузка отдельных фреймов с диска будет медленной.Загрузка жесткого диска будет самой медленной частью.Вы можете найти блок, загружающий набор кадров в память и затем использующий D3DXLoadSurfaceFromFileInMemory для каждого кадра, в то время как асинхронная загрузка другого блока изображений кадров в память является самым быстрым способом.

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