[過去ログ] デスクトップでLinuxが普及する訳ないと思った時 14 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
112
(2): 2019/11/07(木)17:38 ID:AxeF2lCm(2/6) AAS
>>111
非常に複雑なので、手短に説明するのは難しいが、触りだけ理由を書いておく。
Linuxだと、ピクセルごとに自由にARGBの A = アルファ値 を使って
システム中に浮いているWindowに対しても透明色が扱えるのに対し、Windowsだと
システム中に浮いているWindowに対しての透明色は、SetLayeredWindowAttributes()
とLWA_COLORKEYを使わないといけない。Windowsでも一見、アルファ値を指定でき
そうだが、実際にはWindow全体のアルファ値なので、好きな部分だけを完全に透明
にして、他の部分は、元のままのようにすることは出来ず、全体的に薄くするような
ことしかできない。
それで話が複雑なのが、Windowsの場合は、LWA_COLORKEYに指定した色の部分は、
完全透明になるだけでなく、その部分でマウスをクリックすると、デスクトップや、
デスクトップ上のアイコンにまで伝達されてしまうようになる。つまり、単に
透明なだけではなく「穴あき」状態になる。
一方、Linuxでは、A=0にしたピクセルは完全に透明になるが、穴が開いている訳ではなく、
上記の様なマウスメッセージのデスクトップへの伝達は生じない。

なので、このままだと、Windowsを模倣することは出来ない。そこで、Wineでは、
LinuxではARGBを使わずに、X-Windowの外形を変えるシステムコールを使っている。
ところが、それはピクセル単位ではなく、行単位でランレングスの様な形式で
データが与えられる。そして、これが頻繁に図形を変えるととても遅い。
Linuxでのこの仕組みは起動時に一度だけWindowの外形を変える目的で使われる
ためである。一方、WindowsのLWA_COLORKEYを使ったやり方は、ピクセル単位で
画像を変更してもとても高速に処理できる。

これで、ある種のねじれ現象が起きてしまう。説明が長くなるが、お互いに悪い部分同士
の性質が出てしまって、Wineでのエミュレーションはとてつもなく重たくなってしまっている。
113
(1): 2019/11/07(木)17:45 ID:3XWmCdFm(2/6) AAS
>>112
> Linuxだと、ピクセルごとに自由にARGBの A = アルファ値 を使って
いいえ

> 一方、Linuxでは、A=0にしたピクセルは完全に透明になるが、穴が開いている訳ではなく、
> 上記の様なマウスメッセージのデスクトップへの伝達は生じない。
いいえ

技術的にめちゃくちゃ
116: 2019/11/07(木)18:59 ID:3XWmCdFm(4/6) AAS
あ、>>111-112が何をいっているかわかった気がする

これ、X Rendering Extension(XRender)の話だよね?
外部リンク:en.wikipedia.org

Keith Packardが20年ぐらい前に作った半透明Windowや透過Windowなど
gtkやQT等の現X環境でメインで使われているのがX Rendering Extension

半透明でなく穴あきのWindowを実現するXの拡張は>>108で言ったように
Keith Packardが30年ぐらい前作ったShape Extensionで、透過ウィンドウや
3Dアクセラレーションがなかった頃からある拡張
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.032s