2025/10/16 19:57 When you opened a screen shot of a video in Paint, the video was playing in it

ロボ子、今日はWindows 98時代の面白い話をするのじゃ。

Windows 98ですか、博士。それはまた懐かしいですね。どんなお話ですか?

当時のメディアプレーヤーでビデオのスクリーンショットを撮って、ペイントに貼り付けると、ペイントの中でビデオが再生されるという、不思議な現象があったらしいのじゃ!

えっ、ペイントの中でビデオが再生されるんですか!?それは一体どういう仕組みなんですか?

当時のメディアプレーヤーは、ビデオピクセルを直接画面に描画するのではなく、まずビデオを表示したい場所に緑色を描画していたのじゃ。そして、ビデオピクセルをグラフィックカードと共有されるグラフィックスサーフェスにレンダリングし、グラフィックカードに、緑色のピクセルを共有グラフィックスサーフェスからのピクセルで置き換えるように指示していたのじゃ。

なるほど。緑色のピクセルを置き換えることで、ビデオを表示していたんですね。でも、なぜそんな回りくどい方法を?

共有グラフィックスサーフェスがユーザーのメインディスプレイと同じピクセル形式である必要がないという利点があったからのじゃ。それに、完全なペイントサイクルを経由せずにコンテンツを更新できたのじゃ。

ピクセル形式の違いを吸収しつつ、効率的に表示するためだったんですね。

そう言うことじゃ。当時のメディアプレーヤープログラムは、DirectDrawを介してグラフィックカードとネゴシエートし、これらの特別なグラフィックサーフェス(オーバーレイと呼ばれる)を取得し、代替ピクセルとして使用するように構成していたのじゃ。

DirectDrawですか。懐かしい響きです。オーバーレイという技術を使っていたんですね。

スクリーンショットを撮ると、Windowsがビデオカードにデスクトップのコンテンツとして与えたピクセルが取得されるのじゃ。オーバーレイがアクティブな場合、これらはビデオカードから出力されてモニターに送られるピクセルとは異なるのじゃ。

つまり、スクリーンショットには、オーバーレイによるピクセル置換前の緑色のピクセルが記録されていたんですね。

その通り!Paintなどの画像ビューアに画像をロードすると、Windowsはそれらの緑色のピクセルをビデオカードに送信するのじゃ。メディアプレーヤーがまだ実行されている場合、そのオーバーレイはまだアクティブであり、Paintをメディアプレーヤーウィンドウと同じ場所に配置すると、Paintの緑色のピクセルがアクティブなビデオのピクセルに変わるのじゃ。

なるほど!Paintに表示された緑色の部分が、メディアプレーヤーのオーバーレイによってビデオに置き換えられて、あたかもPaintの中でビデオが再生されているように見えたんですね!

そういうことじゃ!ただ、オーバーレイには、ウィンドウがメディアプレーヤーの上に移動し、緑色のピクセルがある場合、ビデオがその別のウィンドウで再生されるという問題もあったのじゃ。

別のウィンドウでビデオが再生されるとは、面白い現象ですね。

今では、ビデオレンダリングはオーバーレイを使用せず、コンテンツはウィンドウに関連付けられたグラフィックサーフェスにレンダリングされるのじゃ。デスクトップコンポジターがすべてのウィンドウのグラフィックコンテンツを取得し、それらを組み合わせてモニターに送信される完全なデスクトップイメージを形成するのじゃ。

デスクトップコンポジターのおかげで、ウィンドウを移動してもオーバーレイが遅れるようなことはなくなったんですね。

そうじゃな。技術の進歩は素晴らしいのじゃ。昔の技術を知ることで、今の技術のありがたみがわかるというものじゃ。

本当にそうですね。博士、今日も勉強になりました!

ところでロボ子、もし私が緑色のペンキをかぶったら、ロボ子のディスプレイに私が映るかのじゃ?

博士、それはオーバーレイとは全く関係ありません!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
