2013-07-22 30 views
7

Đây là câu hỏi từ vựng nhiều hơn bất kỳ điều gì khác.Linux vẽ trên màn hình độc lập với trình quản lý cửa sổ

Giới thiệu

Tôi đang sử dụng Point Mây Thư viện để có được dữ liệu theo dõi khuôn mặt. Sử dụng dữ liệu này tôi muốn theo dõi nơi người dùng đang đối mặt trên màn hình. Đây không phải là vấn đề.

Vấn đề

Để cung cấp cho người dùng thông tin phản hồi, tôi muốn vẽ việc ước lượng mặt hướng của người dùng như một vòng tròn màu đỏ trên màn hình, về cơ bản như đã thấy here (họ chỉ tạo ra một cửa sổ nhỏ) . Tôi muốn vòng tròn này có thể đi khắp mọi nơi trên màn hình và tôi muốn nó luôn hiển thị. Tôi không muốn nó được bao phủ bởi một cửa sổ đang hoạt động khác. Nếu nó cản trở sự tương tác với cửa sổ, tôi ổn với điều đó.

Vấn đề của tôi là tôi không biết bắt đầu từ đâu.

Tôi chỉ có thể điều khiển con trỏ, nhưng điều đó ít lý tưởng hơn vì tôi vẫn muốn di chuyển con trỏ trong khi tôi đang sử dụng tính năng phát hiện khuôn mặt.

Tôi nghĩ mình cần sử dụng OpenGL, nhưng tất cả các ví dụ tôi đã thấy đều nằm trong các cửa sổ X. Ví dụ: mã tôi tìm thấy here sau khi nhận được gợi ý here, hãy cho tôi một cửa sổ vĩnh viễn đẹp mắt, nhưng cửa sổ vẫn nắm bắt tất cả các lần nhấp chuột của tôi. Làm cách nào để vẽ một thứ gì đó trên màn hình với OpenGL có độc lập với X-window?

Tôi có tiếp cận hoàn toàn hướng này từ hướng sai không? Nếu vậy, tôi nên googling những gì?

Tôi sẽ chấp nhận bất kỳ câu trả lời nào cho tôi điểm bắt đầu.

vBulletin

Tôi đang sử dụng Ubuntu 12.04 với desktop Unity.

+0

Điều này có thể giúp bạn bắt đầu: http://stackoverflow.com/questions/9363491/how-to-make-transparent-window-on-linux –

+0

Tôi đọc và chạy mã, nhưng có vẻ như cửa sổ sẽ vẫn bị ẩn nếu tôi kích hoạt một cửa sổ khác. – Seanny123

+3

Bạn không _need_ sử dụng OpenGL, mặc dù đó là một ý tưởng hay (vì lý do hiệu suất và có thể sẽ dễ dàng hơn khi vẽ). Bây giờ, đối với câu hỏi thực tế, tôi khuyên bạn nên xem xét phần mở rộng X.org "tổng hợp" (http://www.x.org/archive/X11R7.5/doc/compositeproto/compositeproto.txt).Điều đó sẽ giúp bạn bắt đầu một nơi nào đó =) – MiJyn

Trả lời

2

Tạo cửa sổ thông thường. Yêu cầu WM bỏ qua trang trí kiến ​​để giữ cho cửa sổ luôn ở trên đầu. Sử dụng XFixesSetWindowShapeRegion() để thiết lập riêng một vùng đầu ra tròn và vùng đầu vào trống. Bạn cần trình quản lý cửa sổ tổng hợp Tiện ích XFixes để tiện ích này hoạt động.

Bạn cũng có thể làm cho cửa sổ của bạn nửa công khai (điều này cần một trình quản lý cửa sổ tổng hợp).

Bộ công cụ hiện đại như gtk phải dễ sử dụng các API để thực hiện tất cả những điều trên.

Không cần OpenGL ở bất kỳ giai đoạn nào.

+0

Cửa sổ này có còn chụp bất kỳ nhấp chuột nào được thực thi trên đó không? – Seanny123

+0

Không, hình dạng đầu vào trống sẽ giải quyết vấn đề này. Về cơ bản nó sẽ không nhận được bất kỳ đầu vào chuột. Không chắc chắn về đầu vào bàn phím mặc dù. –

+0

@ n.m .: Mở rộng hình dạng không yêu cầu WM tổng hợp để hoạt động. Hình dạng đã được khoảng cho mãi mãi, lâu trước khi compositing thậm chí còn nghe nói. – datenwolf

Các vấn đề liên quan