我想知道是否有可能在Scaleform中播放实时视频,例如从网络摄像头播放纹理?
谢谢。
发布于 2017-02-07 23:47:46
为此,您只需将swf中的相应图像替换为包含视频的纹理。
你需要你的视频纹理在你正在使用的图形应用编程接口的纹理中(例如,在DirectX 11中,你需要一个ID3D11Texture2D)。您可以使用TextureImage类围绕它创建一个Scaleform包装器图像。然后,您需要在SWF中找到要替换的资源,并将包装器图像设置为其图像。最后,需要在GFx::Movie上调用ForceImageUpdate,以传播纹理更改。
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示例中显示了如何执行所有这些操作的示例,该示例比此代码更全面一些。如果你有Kinect,还有一个KinectInSWF示例,它展示了如何使用Kinect摄像头(例如.实况摄像机)。
https://stackoverflow.com/questions/42084872
复制相似问题