見出し画像

Spoutで「Cannot create DirectX/OpenGL interop」エラーが出たときの対処

Spout「Cannot create DirectX/OpenGL interop」エラーが出る、もしくは何も表示されないときの対処法です。

Spout標準アプリで動作確認

Spout標準のデモアプリがあるのでまずはこれで動作確認をしましょう。

インストール(していなければ)
ダウンロードページからインストーラーを落として実行
https://spout.zeal.co/download-spout/

デモアプリ

C:\Program Files (x86)\Spout2\DEMO
- SpoutSender.exe
- SpoutReceiver.exe
*インストール場所はデフォルトから変更しなかった場合

SpoutSender ⇒ SpoutReceiverで映像が送受信できていることを確認します。

本記事は、この組み合わせは動作するが、
・別アプリ ⇒ SpoutReceiver
・SpoutSender ⇒ 別アプリ
の組み合わせでうまくいかない場合の対処になります。

1.同じGPUを使用しているか確認する

特にゲーミングノートPCに多いのですが複数のGPUを積んでいる環境ではSpoutの送信側、受信側で同じGPUを使用している必要があります。

NVIDIA製のGPUを使用している場合、

NVIDIAコントロールパネル→3D設定の管理→グローバル設定→優先するグラフィックスプロセッサ

で標準で使用するGPUを指定できます。

画像1

・高パフォーマンスNVIDIAプロセッサ:
 
NVIDIA製のGPU。いわゆるdGPU。

・統合型グラフィックス:
 
CPU内蔵GPU。いわゆるiGPU。

Spoutを使用するようなPCの用途であれば「高パフォーマンス~」で一律指定しておいてよいかもしれません。

アプリケーションごとに指定する場合は「プログラム設定」タブから行います。

また、

デスクトップ→GPUアクティビティアイコンを通知領域に表示する

をチェックしておくとNVIDIA GPU上で動作しているアプリケーションがリアルタイムで確認できるので便利です。

画像3
画像2

*2023/03/30追記

デスクトップPCではiGPUとdGPUと搭載していてもNVIDIAコントロールパネルでグラフィックプロセッサを選択する項目が出てこないケースがあるようです。
このような場合は、

Windowsのグラフィックスの設定(設定→システム→ディスプレイ→グラフィック)

から各アプリケーションのオプションで個別に指定できます

リストにないアプリケーションは参照ボタンから直接実行ファイルを指定することで追加できます

参考:https://qeynos2525.blog.jp/archives/1075306046.html

2.DirectXのバージョンが同じか確認する

Spoutは、DirectX 9 か 11 で動作しますが、

DirectX 9 では 11 のテクスチャを受信できません。

同じGPUを使用していてもエラーが解消しない場合はこちらのケースが考えられます。
*OpenGLについては未検証ですがおそらく手順は同様だと思われます

■ SpoutSender、SpoutReceiverで使用しているバージョンを確認する

タイトルバーでバージョンが確認できます。

画像4
画像5

■ SpoutSender、SpoutReceiverで使用するバージョンを切り替える

Spoutの設定アプリ

C:\Program Files (x86)\Spout2\SPOUTSETTINGS\
- SpoutSettings.exe

Options→DirectX 9 のチェックで切り替えられます(チェックしなければDirectX 11)。

画像6

こちらを設定したのちにSpoutSender、SpoutReceiverを立ち上げなおすとDirectXのバージョンが切り替わります。

問題のアプリとこれらの組み合わせを動作確認をすることで、不具合の原因が DirectX 9 で DirectX 11 のテクスチャを受信しようとしているからかどうか調べることができます。

もしお役に立ちましたらスキ(♡マーク)をお願いします!!! noteアカウントがなくても大丈夫です。サポートもお待ちしています!