Scaleform Воспроизвести живое видео с текстурой?

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


person SteveTJS    schedule 07.02.2017    source источник


Ответы (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 (например, камеры прямой трансляции).

person MuertoExcobito    schedule 07.02.2017
comment
На самом деле у меня проблема с * pmanager- ›CreateTexture (videoTexture, ImageSize (width, height)); поскольку нет функции CreateTexture с типом videoTexture в качестве параметра. - person SteveTJS; 16.02.2017
comment
извините, должно было быть ID3D11Texture2D, а не ID3DTexture2D (обновлено). - person MuertoExcobito; 16.02.2017