2013-07-22 10 views
7

To jest bardziej pytanie na temat słownictwa niż cokolwiek innego.Rysowanie Linuksa na ekranie niezależnie od menadżera okien.

Wprowadzenie

Używam temperatury mętnienia Library, aby uzyskać dane śledzenia twarzy. Korzystając z tych danych, chcę śledzić położenie użytkownika na ekranie. To nie jest problem.

Problem

Aby zapewnić łatwość obsługi zwrotne, chciałbym zwrócić oszacowanie twarz kierunku użytkownika jako czerwone kółko na ekranie, w zasadzie jak widać here (oni po prostu stworzyć mały okno) . Chciałbym, żeby to koło było dostępne wszędzie na ekranie i chcę, aby było zawsze widoczne. Nie chcę, aby było pokryte przez inne aktywne okno. Jeśli przeszkadza w interakcji z oknem, nie mam z tym nic przeciwko.

Moim problemem jest to, że nie wiem od czego zacząć.

Mogę po prostu kontrolować kursor, ale to jest mniej niż idealne, ponieważ chciałbym nadal móc przesuwać kursor, gdy używam wykrywania twarzy.

Myślę, że potrzebuję użyć OpenGL, ale wszystkie przykłady, które widziałem, były wewnątrz okien X. Na przykład kod, który znalazłem here po otrzymaniu podpowiedzi here, dał mi ładne, trwałe okno, ale okno wciąż przechwytuje wszystkie moje kliknięcia myszą. Jak narysować coś na ekranie z OpenGL, który jest niezależny od X-window?

Czy zbliżam się całkowicie do tego z niewłaściwego kierunku? Jeśli tak, to co powinienem używać google?

Przyjmuję każdą odpowiedź, która daje mi punkt wyjścia.

Platforma

używam Ubuntu 12.04 z pulpitu Unity.

+0

To może być zacząć: http://stackoverflow.com/questions/9363491/how-to-make-transparent-window-on-linux –

+0

Przeczytałem to i uruchomiłem kod, ale wygląda na to, że okno nadal być ukryty, jeśli aktywowałem inne okno. – Seanny123

+3

Nie musisz używać OpenGL, ale byłby to dobry pomysł (ze względów wydajnościowych, a może byłoby to łatwiejsze do rysowania). Teraz, aby uzyskać aktualne pytanie, polecam zajrzeć do "złożonego" rozszerzenia X.org (http://www.x.org/archive/X11R7.5/doc/compositeproto/compositeproto.txt).To powinno ci zacząć gdzieś =) – MiJyn

Odpowiedz

2

Utwórz zwykłe okno. Powiedz WM, aby pomijała dekoracje mrówek, aby okno było zawsze na wierzchu. Użyj XFixesSetWindowShapeRegion(), aby osobno ustawić okrągły obszar wyjściowy i pusty obszar wprowadzania. Potrzebujesz menedżera okien z kompozycjami Rozszerzenie XFixes, aby to działało.

Możesz również uczynić swoje okno półprzezroczyste (wymaga to menedżera okien compositing).

Nowoczesny zestaw narzędzi, taki jak gtk, powinien mieć łatwe w użyciu interfejsy API do wykonywania wszystkich powyższych czynności.

Na żadnym etapie OpenGL nie jest potrzebny.

+0

Czy to okno nadal będzie przechwytywać kliknięcia myszy? – Seanny123

+0

Nie, nie, pusty kształt wejściowy zajmuje się tym. Zasadniczo nie otrzyma żadnego wejścia myszy. Nie wiem jednak o wprowadzeniu klawiatury. –

+0

@ n.m .: Rozszerzenie kształtu nie wymaga użycia kompozycji WM. Kształt istnieje od około wieczora, na długo przed tym, zanim nawet kompozycja została usłyszana. – datenwolf

Powiązane problemy