我想知道是否可以在 Scaleform 的纹理中播放来自网络摄像头的实时视频?
谢谢。
问问题
143 次
1 回答
0
为此,您只需将 swf 中的适当图像替换为包含视频的纹理的图像。
您需要将视频纹理放入您正在使用的图形 API 的纹理中(例如,在 DirectX 11 中,您需要一个ID3D11Texture2D
. TextureImage
您可以使用该类创建一个 Scaleform 包装图像。然后,您需要在 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 摄像头(例如实时摄像机)来执行此操作。
于 2017-02-07T15:47:46.303 回答