2010-05-29 19 views
5

Widziałem takie rzeczy i zastanawiałem się, czy to było możliwe, powiedz, że uruchomię moją aplikację i pokaże ona render na tym, co jest poniżej.Narysuj OpenGL na pulpicie Windows bez okna

W zasadzie renderowanie na ekranie bez okna.

Możliwe lub kłamstwo?

Uwaga: chcesz to zrobić w oknach i C++.

+0

Nie rozumiem, co chcesz zrobić z wyjściem renderowania: gdzie chcesz to pokazać? Powiązane: http://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file –

Odpowiedz

4

Możliwe jest użycie aplikacji do rysowania na oknach innych aplikacji. Po znalezieniu żądanego okna, masz go na HWND, możesz go użyć tak jak było to twoje własne okno do celów rysowania. Ale ponieważ to okno nie wie, że to zrobiłeś, prawdopodobnie zepsuje to, co na nim narysujesz, kiedy spróbuje przerysować siebie.

Istnieje kilka bardzo skomplikowanych sposobów obejścia tego problemu, niektóre z nich wymagają użycia "haczyków" do przechwytywania wiadomości rysunkowych do tego okna, aby wiedzieć, kiedy przerysowano je, aby można było również wykonać przerysowanie.

Inną opcją jest użycie regionów wycinania w oknie. Dzięki temu możesz nadać swojemu oknu niezwykły kształt i mieć wszystko za sobą.

Istnieją również sposoby na przejęcie rysowania okna tła pulpitu, a ponadto można uruchomić aplikację, która rysuje animacje i inne elementy na pulpicie (podczas gdy pulpit jest nadal dostępny). Przynajmniej było to możliwe przez XP, nie ma pewności, czy zmieniło się w Vista/Win7.

Niestety, wszystkie te opcje są zbyt skomplikowane, aby uzyskać więcej szczegółów, bez dodatkowych informacji na temat tego, co próbujesz zrobić.

1

Możesz użyć GetDesktopWindow(), aby uzyskać HWND pulpitu. Ale jak poprzednia odpowiedź mówi (SoapBox), bądź ostrożny, możesz zepsuć pulpit, ponieważ system operacyjny oczekuje, że jest jego właścicielem.

+0

Tak, to jest trudne do pracy z tym (poprawnie), zgaduję, że ja może rasteryzować każdą ramkę, a następnie używać tego jako okna o niestandardowym kształcie przez cały czas, ale to będzie raczej powolne. Użyłem GDI wcześniej, aby narysować png na pulpicie itp., Ale uzyskanie animacji w tym jest nieco trudne, ale spróbuję zrobić mój pomysł rasteryzacji z GDI, renderować wszystko do png i używać go z GDI. Dzięki za pomoc SoapBox i gbrandt oczywiście. – Yonathan

0

Kilka lat temu napisałem projekt o otwartym kodzie źródłowym, aby osiągnąć ten cel na komputerze stacjonarnym. Nazywa się Uberdash. Jeśli podążasz za hierarchią okien, pulpit jest tylko oknem w rodzaju kontenera "tła". Następnie znajduje się główny pojemnik i przedni pojemnik. Przedni kontener to sposób, w jaki okna stają się pełnoekranowe lub "zawsze na wierzchu". Możesz użyć kompozycji Aero do renderowania okna z alfą w przednim pojemniku, ale będziesz musiał przekazać zdarzenia do niższych okien. To nie będzie piękne.

Ponadto, w niektórych kartach wideo istnieje technologia o nazwie nakładki/podkładki. W przeszłości można było renderować bezpośrednio na nakładkę. Twój układ GPU zastosowałby go bezpośrednio, bez zakłóceń pamięci głównej. Więc nawet jeśli zrobiłeś zrzut ekranu, twoja nakładka/podkład nie pojawiłaby się w górnej części ekranu. Niestety, MS zakazał tej technologii w Vista ...

Powiązane problemy