hecomi / uWindowCapture

This allows you to use Windows Graphics Capture / PrintWindow / BitBlt in Windows to capture multiple windows individually and easily use them as Texture2D in Unity.
https://tips.hecomi.com/entry/2021/04/30/230322
MIT License
493 stars 79 forks source link

カーソル描画の ON/OFF が動作しない #32

Open tanaka-kanata opened 3 years ago

tanaka-kanata commented 3 years ago

下記コードを試しましたがカーソルが常に描画(キャプチャ)されてしまいます。

UwcWindow.cursorDraw = false; UwcWindowTexture.drawCursor = false;

・Exsamples/Single Window → 現象は発生しません。 ・Exsamples/Window List → 現象は発生します。 ・WindowsGraphicsCapture モードで発生します。  Windows10 20H2 で Cursor support の判定は true になっています。

複数のウインドウを対象とした場合に発生しているように思えます。

下記のように「変化判定」のif文をコメントアウトするとカーソル描画は OFF に出来ました。

WindowsGraphicsCapture.cpp

line 297 void WindowsGraphicsCapture::EnableCursorCapture(bool enabled) { //if (isCursorCaptureEnabled_ == enabled) return;

カーソルを OFF にする場合の注意事項などありますでしょうか?

hecomi commented 3 years ago

返信が遅くなってしまい大変申し訳ありません。現象報告ありがとうございます。 同条件でテストしたのですが手元ではカーソルの ON/OFF が Window List シーンでも正常に動作するようです。 ちなみに UwcWindowTexture.drawCursor = false はスクリプトから実行されてますでしょうか? それとも Unity の GUI 上で切り替えられていますか?

tanaka-kanata commented 3 years ago

前回の報告で間違っている部分がありました。申し訳ありません。 設定の変更はスクリプトから行っており、再度、確認を行ったところ、

UwcWindowListItem::Update に window.cursorDraw = false; を追加した場合はOFFになりませんでしたが、 if (windowTexture != null) { windowTexture.drawCursor = false; } を追加した場合はOFFになりました。

UwcWindow.cursorDraw を操作すると期待する動作にならないようです。

リスナーの OnWindowAdded(UwcWindow window) 呼び出し直後に window.cursorDraw = false; を行い、UwcWindowTexture生成前に カーソルをOFFに出来れば…と思っておりました。