Scaleform Играть живое видео в текстуре?

Я хотел бы знать, возможно ли воспроизводить живое видео, например, с веб-камеры, в виде текстуры в Scaleform?
Благодарю.

1 ответ

Чтобы сделать это, вам просто нужно заменить соответствующее изображение внутри SWF на то, которое оборачивает текстуру, которая содержит ваше видео.

Вам понадобится, чтобы ваша видео-текстура была в виде текстуры из используемого вами графического API (например, в DirectX 11 вам понадобится ID3D11Texture2D). Вы можете создать обертку Scaleform вокруг этого, используя TextureImage учебный класс. Затем вам нужно найти ресурс в SWF, который вы хотите заменить, и установить изображение обертки как его изображение. Наконец, вам нужно позвонить ForceImageUpdate на GFx:: Movie, чтобы распространить изменение текстуры.

ID3D11Texture2D* videoTexture = ...;
Ptr<GFx::Movie> pMovie = ...;
Ptr<D3D1x::TextureManager> pmanager = ...;
Ptr<Render::Texture> scaleformTexture = *pmanager->CreateTexture( videoTexture, ImageSize(width, height));
Ptr<TextureImage> scaleformImage = * SF_NEW TextureImage(Image_R8G8B8, scaleformTexture->GetSize(), 0, scaleformTexture);
ImageResource* pimageRes = (ImageResource*)pMovie->GetMovieDef()->GetResource("name_of_resource");
pimageRes->SetImage(scaleformImage);
pMovie->ForceUpdateImages();

Когда вы обновляете базовый ID3D11Texture2D (например, с новым кадром), изображение в фильме Scaleform также изменится. Пример того, как сделать все это, показан в примере TextureInSWF, который немного более тщателен, чем этот код. Если у вас есть XBoxOne SDK, есть также пример KinectInSWF, который показывает, как это сделать с помощью камеры Kinect (например, видеокамеры в режиме реального времени).

Другие вопросы по тегам