ラベル GLX の投稿を表示しています。 すべての投稿を表示
ラベル GLX の投稿を表示しています。 すべての投稿を表示

2017年8月2日水曜日

他の窓をGLXでキャプチャするのはダメポ

開発環境にはXfce4を使っているのだが、この環境でGLXでキャプチャするとXfce4をコンポジット処理の「全画面オーバーレイウィンドウを直接表示する」を設定しておかないとキャプチャできず真っ黒になり、指定しておくと画面の更新が止まり、コンポジットを使わないとゴミが読み出される...という状況になっている。

まぁ要するにこの方法では無理って事だ。

KDEとかだとまた違う可能性もあるのでそのうち試すとしても、GLXによるキャプチャが使えないとするとあのスットロイX標準の方法でキャプチャするしかないのか...orz

--

Xephryを取り込んだりして子コンテキストに描画させることはできるので不可能じゃないんだけど、手間かかりそうなので将来の課題だなー。本筋じゃないし。

2017年7月28日金曜日

キャプチャのためのGLXコンテキスト

描画先が根窓ではない以上、キャプチャのためのGLXコンテキストが必要になる...というわけで作りかけだった部分を一通りちゃんと組んで安定してGLXコンテキストを扱えるようにしてみた...相変わらず値窓は真っ黒なわけだけどこれは後でXephyrの窓になるように修正するのでおk。

GLXコンテキストは何かマズイことをするとエラーを出すとかじゃなくてsegfaultで落ちるというセンシティブなブツなのだが、ラッパクラスがちゃんと動くことを確認できたのでこれで気軽に子コンテキストを扱えるようになるというもの。キャプチャに関してはあとはXephyrの起動と本命窓の特定ってところで、イベントの配信が巧く行けばアプリケーション側はVRHMDを外さずに開発できるようになる。

VRHMDの脱着は結構厄介な問題で、うちではDK1のスポンジはボロボロで、DK2のスポンジは切れた...と思ったら剥がれてただけなので補修しとこう。ともかくVRな開発で脱着を繰り返すとすごい勢いで痛むのだ。VRカバーってのもあるけど取れやすくて困るし...単純に面倒というのも小さくはないけどね。

2017年6月7日水曜日

Xのキャプチャ

ルート窓を取り込むためのGLXコンテキストを作って、スレッドでカレントにするとsegfaultで、X越しに設定するとBadMatchでおっ死ぬのだが...スレッドなのでBadMatchってのはないと思うのだが...と悩んでいたのだが、manに「drawable が None なのに ctx が NULL でない場合」にも起きるとの記述がある。この場合drawableはルート窓なので...。

もしやと思いルート窓用のコンテキストを先に作って、それを描画先窓のコンテキストで共有するようにしたらX越しに設定すると相変わらずBadMatchは起きるものの直接設定した時にはsegfaultは起きなくなった。

もっとも、キャプチャできていないんだけど(ダメジャン

2017年6月5日月曜日

根窓に直接描画するようにすると画面真っ暗というのはどうもxfce4の仕様が変わったのが原因な気がする。デスクトップの背景に記憶になかった「透明」ってのがある(指定したけど変わらなかった)。

窓を作って描画するとキャプチャが非常に面倒になるので避けたいのだが...キャプチャ自体はできるのだけれどGLXのコンテキストにはXのdrawableを指定する必要があって、描画対象の窓が別になると別のコンテキストになる。

親子関係があれば別コンテキストでリソースを共有できるので別コンテキストであること自体はいいのだが、GLXのコンテキストはスレッドにくっついてるのでスムーズに切り替えるには別スレッドにしとく必要がある(単一スレッドで切り替えるといちいちコンテキストの解放、作成を繰り返すことになるので非常に遅い)。逆に言えば別スレッドであればフレームバッファ切り替えの隙を突く必要もなくなるわけだが...。

引っ越すことにした。

引っ越し先。 見えるかな。