2017-02-07 2 views

答えて

0

これを行うには、swf内の適切なイメージを、ビデオを含むテクスチャをラップするイメージに置き換えるだけです。

ビデオテクスチャは、使用しているグラフィックスAPIのテクスチャに含める必要があります(たとえば、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サンプル内に示されていますが、これはこのコードよりも少し徹底的です。 XBoxOne SDKをお持ちの場合は、Kinect Camera(ライブビデオカメラなど)でこれを行う方法を示すKinectInSWFサンプルもあります。

+0

実際、私は* pmanager-> CreateTexture(videoTexture、ImageSize(width、height))に問題があります。 VideoTextureの型をパラメーターとして持つCreateTexture関数がないためです。 – SteveTJS

+0

申し訳ありませんが、 'ID3DTexture2D'ではなく' ID3D11Texture2D'だったはずです。 – MuertoExcobito

関連する問題