Cách đối phó với OpenGL và Toàn màn hình trên OS X


9

Tôi thực hiện hầu hết sự phát triển của mình trên OS X và đối với dự án trò chơi hiện tại của tôi, đây là môi trường mục tiêu của tôi. Tuy nhiên khi tôi chơi game tôi chơi trên Windows. Là một game thủ windows, tôi quen với Alt + Tab chuyển từ trong trò chơi sang ứng dụng cuối cùng được mở.

Trên OS XI hiện tại không thể tìm thấy một trò chơi hỗ trợ mà tôi cũng không thể tìm ra cách để làm cho nó có thể. Dự án hiện tại của tôi dựa trên SDL 1.3 và tôi có thể thấy tab cmd + là một chuỗi được gửi trực tiếp đến ứng dụng của tôi và không bị hệ điều hành chặn.

Bây giờ, nỗ lực đầu tiên của tôi là ẩn cửa sổ kết xuất trên tab cmd +, điều này chắc chắn hoạt động, nhưng có nhược điểm là cửa sổ OpenGL ẩn trong SDL không thể được khôi phục khi người dùng quay lại ứng dụng. Trước hết, không có sự kiện nào xảy ra cho điều đó hoặc tôi không thể tìm thấy nó, vấn đề cốt lõi là khi cửa sổ ứng dụng đó bị ẩn, trò chơi của tôi vẫn là ứng dụng hoạt động, chỉ là cửa sổ biến mất.

Điều đó thật khó chịu.

Bất kỳ ý tưởng làm thế nào để ước tính hành vi windows / linux cho tab alt +?

Câu trả lời:


2

Vấn đề là bạn đang chụp màn hình, như được mô tả trong tài liệu của Apple tại đây: https://developer.apple.com/l Library / mac / # documentation / graphicsimaging /Conualual / QuartzDisplayServiceConceptual / Articles / Documentplay

Điều này có nghĩa là TẤT CẢ các lệnh bàn phím bị ứng dụng của bạn chặn. Có những lợi thế cho phương pháp này, tùy thuộc vào ứng dụng của bạn.

Các tài liệu của Apple nói, ở phía dưới:

Lưu ý: Không cần thiết phải chụp màn hình để thực hiện vẽ toàn màn hình. Một cách tiếp cận khác là tạo và vẽ vào một cửa sổ không viền kích thước của màn hình. Cách tiếp cận này cho phép bạn sử dụng tất cả các tính năng của hệ thống cửa sổ. Nó cũng chơi tốt với phần còn lại của hệ điều hành và nó làm giảm sự phức tạp của việc xử lý hiển thị (ví dụ: bạn không phải lo lắng về màn hình được nhân đôi). Với phương pháp này, bạn có thể nhận được các thông báo lỗi có thể bị bỏ qua với màn hình được chụp. Bạn cũng có thể sử dụng Command-Tab để thay đổi ứng dụng theo phương pháp này. Trên các hệ thống có phần cứng đồ họa hiện đại, hiệu suất vẽ trong cửa sổ toàn màn hình gần như nhanh như bối cảnh vẽ toàn màn hình.

Những gì bạn cần làm là làm cho màn hình openGL của bạn hiển thị toàn màn hình mà không cần chụp màn hình. Đây là cách cocos2d hiện xử lý các ứng dụng OS X toàn màn hình. Bạn có thể duyệt mã cho cocos2d Mac tại đây: https://github.com/cocos2d/cocos2d-iphone/tree/master-v2/cocos2d/Plevelops/Mac

Hãy xem cụ thể trong CCDirectorMac.m và CCGLView.m để thực hiện.

Nếu bạn xác định rằng bạn muốn giới hạn có chọn lọc một số chức năng, chẳng hạn như chuyển đổi quy trình, mà không giới hạn tất cả các tính năng của hệ thống cửa sổ, bạn có thể tìm đến Lưu ý kỹ thuật của Chế độ kiosk Apple: http://developer.apple.com / l Library / mac / # technotes / kiốtMode / Inttiontion / Intributiontion.html


1

Kinh nghiệm của tôi về điều này trên máy Mac là thông thường có một phím tắt để thoát chế độ toàn màn hình sang chế độ cửa sổ (thường là CMD + M hoặc CMD + Return). Khi bạn đã chuyển sang chế độ cửa sổ, bạn có thể truy cập tất cả các ứng dụng của mình như bình thường. Chế độ cửa sổ cũng cho phép người dùng theo dõi trò chơi của họ trong số tất cả các ứng dụng khác của họ. Vì vậy, tôi đoán bạn chỉ có thể thực hiện loại chức năng này cho trò chơi của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.