Я хотел бы знать, можно ли воспроизводить живое видео, например, с веб-камеры, в текстуре в 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 (например, камеры прямой трансляции).
ID3D11Texture2D
, а не ID3DTexture2D
(обновлено).
- person MuertoExcobito; 16.02.2017