2011-12-15 10 views
7

Dobry wieczór faceci, Obecnie pracuję nad monitorem temperatury GPU NVIDIA w Delphi 2010. Dostarczę również informacje o systemie z WMI.Delphi - DirectX - OSD/Screen Overlay

Obecnie pracuję nad kilkoma różnymi metodami OSD (wyświetlanymi na ekranie) w różnych sytuacjach. Mam już 2 metody, ale potrzebuję innego specjalnie dla gier.

Co chcę zrobić, to wyświetlić nakładkę lub OSD z tekstem za pomocą Direct2D lub Direct3D. Wstrzykiwanie DLL jest ryzykowne, nie wspominając już o dość trudnym do perfekcji. Jak możesz sobie wyobrazić, staram się nakładać go na gry, ale nałożenie go w dowolnym miejscu byłoby równie dobre.

Jak można sobie wyobrazić, użycie Direct2D lub Direct3D do nałożenia go byłoby znacznie lepsze. Hooking byłby tylko jednym pomysłem, ale prawdopodobnie doprowadziłoby to również do konieczności wprowadzenia kodu.

Zasadniczo chcę najprostszą metodę wyświetlania tekstu na ekranie, który nie ma znacznej utraty wydajności i nie migocze, gdy ekran jest odświeżany (to znaczy, że renderowana jest nowa klatka). Chciałbym móc rysować również obrazy (ponieważ dodałem do nich wykresy w mojej aplikacji, ich wyprowadzenie byłoby bonusem, ale wyjście z tekstu jest tutaj głównym zadaniem).

Szczerze mówiąc nie mam nic przeciwko, jeśli potrzebuję haka i/lub wstrzykiwania, ale nie mam doświadczenia z robieniem tego i absolutnie potrzebowałbym dużej pomocy w tym. Robienie czegoś podobnego do tego, co robią MSI Afterburner lub FRAPS, będzie dokładnie tym, czego szukam.

Brakuje mi również wiedzy na temat programowania lub projektowania DX, więc znowu potrzebna jest tam ciężka pomoc. Mam zaprojektowaną i działającą większość aplikacji i jest to kwestia zakończenia tego jednego dużego zadania i oczyszczenia innych mniejszych części.

Wszelkie pomysły?

Edytowane: Zmniejszono liczbę akapitów w celu łatwiejszego czytania. Zredukowanie go bardziej prawdopodobnie nie wyjaśniłoby wystarczającego punktu. Dla osób, które widziały zmienioną wersję, wykonałem ciężkie badania, ale nie przyniosłem żadnych rezultatów.

Edytowane: Nikt nie ma więcej danych wejściowych? Czy zamiast tego możliwe byłoby użycie biblioteki DLL napisanej w innym języku, aby wyprowadzić OSD i po prostu przekazać do niej moje parametry? Jeśli tak, to w jaki sposób chciałbym to zrobić i czy jest jakiś przykładowy kod w jakimkolwiek języku, z którego mógłbym pracować?

+4

Zabawka z podobną rzeczą kilka lat temu (dla bardzo różnych celów). Muszę powiedzieć, że to nie jest najłatwiejsza rzecz na świecie, aby osiągnąć (mimo, że mam doświadczenie z OpenGL, DirectX (2D i 3D) i rozwojem gier wideo, nakładki to ból. Mam nadzieję, że ktoś dostarczy fajne rozwiązanie (mogę skorzystać z to też). + 1'd pytanie.Zalecaj zmniejszanie akapitów, jeśli możesz, ale! – LaKraven

+0

Dzięki LaKraven.Nie wyobrażałem sobie, że byłoby to łatwe.Jednak jestem programistą OCD, i ja nie Jeśli nie chcę jej używać, ponieważ jest ona w zgodzie z istniejącymi aplikacjami, nie wydaje mi się, żebym mógł ją opublikować na świecie, chyba że jest przeznaczona tylko dla jeden konkretny cel: Zredukowaliśmy ilość kontekstu w oryginalnym pytaniu :) –

Odpowiedz

2

Możesz chcieć rzucić okiem na Taksi. Jest to FRAPS typu open source. I tak, w grę wchodzi wstrzyknięcie kodu i zahaczenie. No cóż, napisany w C++.

+0

Dzięki "iamjoosy", to jest coś, o czym myślę. Budowanie w RAD Studio 2010 dałoby mi możliwość pracy z nim, ale nadal wolę Delphi dla tego projektu. Nadal jednak to robię, ponieważ warto się nim zająć. –