2010-08-23 27 views
15

Có vẻ như câu hỏi này đã được hỏi nhiều lần trong mỗi ngữ cảnh khác nhau và tôi đã thực hiện một số bước tiến trong việc tạo lớp phủ cho trò chơi (Đây là dữ liệu thông tin, v.v.). Tôi cũng muốn làm cho nó có thể hoạt động như Steam và XFire.Lớp phủ DirectX toàn màn hình? Có .. một lần nữa C#

Tôi đã quản lý để có được lớp phủ cho trò chơi trực tiếp trong khi ở chế độ cửa sổ ... kinda.

Tôi đã xem xét tất cả các ngăn xếp tràn và google mà không có nhiều may mắn.

Nếu được yêu cầu, tôi có thể thử điều này bằng C++ thay vì C#. Tôi biết C# nhưng tôi không coi mình là một người chuyên nghiệp bằng bất kỳ phương tiện nào. Chỉ cần một lời giải thích tốt hơn. Heck tôi sẽ sẵn sàng để đặt cùng một screencast/hướng dẫn tốt đẹp nếu tôi có thể nhận được quyền làm việc này.

LƯU Ý: Tôi thực sự muốn làm điều này với mã gốc hơn là thư viện nhưng nếu có thư viện miễn phí tốt, tôi muốn kiểm tra.

Ví dụ: How to overlay graphics on Windows games?

http://www.gamedev.net/community/forums/topic.asp?topic%5Fid=359794

C# "Lock" an overlay form to the position of another window

More Info: tôi đã quản lý để có được một hình thức cửa sổ để che phủ một cửa sổ trò chơi với và đặt phụ huynh của mình cho rằng với SetParent. Tuy nhiên, điều này không hoạt động tốt vì nó sẽ không hoạt động ở chế độ toàn màn hình và tính minh bạch không hoạt động. (về cơ bản đã có một khóa minh bạch và TopMost được đặt thành TRUE.) Tôi thực sự muốn tìm một phương pháp khác.

+1

Câu hỏi thực tế của bạn là gì? Và bạn đã viết bất kỳ mã nào chưa? Bạn không có khả năng để có được một hướng dẫn ra khỏi StackOverflow, nhưng bạn sẽ nhận được câu trả lời cho các câu hỏi cụ thể nếu bạn có chúng. Ngoài ra, tôi không chắc chắn "khó tin" là từ bạn đang tìm kiếm. Bạn có nghĩa là "tương tác?" –

+0

Tôi đã cố gắng nghiên cứu vấn đề từ xa. Tôi sẽ nhận được một số mã sau đó ví dụ. Tôi sẽ cố gắng thực hiện một chỉnh sửa khác với nhiều thông tin hơn. Cảm ơn. Và vâng, tôi có nghĩa là có thể diễn xuất được. Kiểm tra chính tả không thành công với tôi. :) – Tyler

+0

Cũng xem http://stackoverflow.com/questions/925981/overlaying-on-a-3d-fullscreen-application – aib

Trả lời

-1

Tôi đề xuất sử dụng phương pháp RenderToSurface của Thư viện DirectShow. Nó có khá nhiều thứ bạn đang tìm kiếm. (Bản vẽ bề mặt DirectX).

http://www.experts-exchange.com/Programming/Game_Development/Game_Graphics/DirectX/Q_20410452.html (Một ví dụ)

http://msdn.microsoft.com/en-us/magazine/cc164112.aspx

+0

Cảm ơn, tôi đang kiểm tra điều này. – Tyler

+0

Liên kết đầu tiên của bạn bị hỏng. Đó là một trang đăng ký mà theo như tôi có thể nói có rất ít để làm với câu trả lời. – aib

+0

Sau đó, làm thế nào bạn sẽ biết liệu nó có liên quan gì đến yêu cầu - xem xét câu hỏi ban đầu có vẻ như bạn đang bình luận tùy ý dựa trên giả định. Chuyên gia trao đổi, là một dịch vụ trả lời/giải pháp trả tiền cho các nhà phát triển và lập trình viên. Trích: Cách truy cập các bề mặt của một luồng (chương trình) (thứ cấp) từ một luồng khác (chương trình). Tôi nghĩ rằng chụp bề mặt DirectX là một bí mật được giữ kín./ít nhất tôi không thể tìm thấy bất kỳ thông tin nào về chủ đề/ –

1

Tôi đã làm điều này trong Delphi năm trước. Các tùy chọn duy nhất tại thời điểm đó là để tiêm một DLL Win32 Native vào quá trình này, quá trình này sẽ gọi hàm DLL DirectDraw của tôi và tôi sẽ ủy quyền phần còn lại cho DirectDraw thực. Đây là cách duy nhất tôi có thể đảm bảo nó sẽ làm việc nếu chương trình chuyển đổi toàn màn hình đến/từ cửa sổ. DLL của tôi sẽ tạo ra một không gian tệp chia sẻ trong bộ nhớ để giao tiếp giữa nó và chương trình của tôi.

Lý do tôi làm điều này là viết trong trò chơi những người nói trong TeamSpeak hoặc Ventrilo.

Tuy nhiên, phương pháp này không thể thực hiện với đối tượng thời gian chạy CLR. Optiont duy nhất của bạn là xem xét C++ Native DLL Injectrion/Wrapping.

+0

Tôi đã trải qua quá trình tiêm. Vấn đề của tôi là, tôi muốn phủ lên các khung nhìn nhúng chromium (như các cửa sổ điện tử) ở phía trên của ứng dụng trực tiếp toàn màn hình. Bất kỳ con trỏ về điều đó? – alDiablo

+0

Không. Có lẽ sẽ không hoạt động. Ở chế độ toàn màn hình, ứng dụng có ưu tiên toàn màn hình, bạn không thể đặt bất kỳ lớp phủ * nào lên trên. Tùy chọn duy nhất là tạo các hàm vẽ DirectX trong chính ứng dụng. –

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