วิธีจัดการกับ OpenGL และ Fullscreen บน OS X


9

ฉันทำการพัฒนาบน OS X เป็นส่วนใหญ่และสำหรับโครงการเกมปัจจุบันของฉันนี่คือสภาพแวดล้อมเป้าหมายของฉัน อย่างไรก็ตามเมื่อฉันเล่นเกมฉันเล่นบน Windows ในฐานะนักเล่นเกม windows ฉันคุ้นเคยกับการเปลี่ยน Alt + Tab จากภายในเกมเป็นแอปพลิเคชันสุดท้ายที่เปิดขึ้น

ใน OS XI ปัจจุบันไม่สามารถหาเกมที่รองรับได้และฉันไม่สามารถหาวิธีที่จะทำให้เป็นไปได้ โครงการปัจจุบันของฉันใช้ SDL 1.3 และฉันเห็นว่าแท็บ cmd + เป็นลำดับที่ส่งโดยตรงไปยังแอปพลิเคชันของฉันและไม่ถูกขัดขวางโดยระบบปฏิบัติการ

ตอนนี้ความพยายามครั้งแรกของฉันคือการซ่อนหน้าต่างการแสดงผลบนแท็บ cmd + ซึ่งใช้งานได้อย่างแน่นอน แต่มีข้อเสียที่ไม่สามารถกู้คืนหน้าต่าง OpenGL ใน SDL ที่ซ่อนอยู่เมื่อผู้ใช้แท็บกลับไปที่แอปพลิเคชัน ก่อนอื่นไม่มีเหตุการณ์ใดเกิดขึ้นสำหรับฉันหรือฉันไม่สามารถค้นหาได้ประการที่สองปัญหาหลักคือเมื่อหน้าต่างแอปพลิเคชันนั้นถูกซ่อนเกมของฉันยังคงเป็นแอปพลิเคชั่นที่ใช้งานอยู่

นั่นเป็นเรื่องที่น่ารำคาญอย่างมาก

มีแนวคิดใดที่จะประมาณพฤติกรรมของ windows / linux สำหรับแท็บ alt +

คำตอบ:


2

ปัญหาคือคุณกำลังจับภาพหน้าจอดังที่อธิบายไว้ในเอกสารประกอบของ Apple ที่นี่: https://developer.apple.com/library/mac/#documentation/graphicsimaging/gcepticsimaging/Conceptual/QuartzDisplayServicesConceptual/Articles/DisplayCapture.html

ซึ่งหมายความว่าคำสั่งแป้นพิมพ์ทั้งหมดจะถูกสกัดกั้นโดยแอปพลิเคชันของคุณ มีข้อดีของวิธีนี้ขึ้นอยู่กับแอปพลิเคชันของคุณ

เอกสารของ Apple บอกไว้ที่ด้านล่าง:

หมายเหตุ: ไม่จำเป็นต้องทำการจับภาพหน้าจอเพื่อทำการวาดแบบเต็มหน้าจอ อีกวิธีหนึ่งคือการสร้างและวาดลงในหน้าต่างไร้ขอบขนาดของจอแสดงผล วิธีการนี้ช่วยให้คุณสามารถใช้คุณสมบัติทั้งหมดของระบบหน้าต่าง นอกจากนี้ยังทำงานได้ดีกับระบบปฏิบัติการส่วนที่เหลือและลดความซับซ้อนของการจัดการจอแสดงผล (ตัวอย่างเช่นคุณไม่ต้องกังวลกับหน้าจอที่ทำมิเรอร์) ด้วยวิธีการนี้คุณสามารถรับการแจ้งเตือนข้อผิดพลาดที่อาจพลาดด้วยการแสดงผลที่บันทึกไว้ คุณยังสามารถใช้ Command-Tab เพื่อเปลี่ยนแอปพลิเคชันด้วยวิธีการนี้ สำหรับระบบที่มีฮาร์ดแวร์กราฟิกที่ทันสมัยประสิทธิภาพการวาดในหน้าต่างแบบเต็มหน้าจอนั้นเกือบจะเร็วเท่ากับบริบทการวาดแบบเต็มหน้าจอ

สิ่งที่คุณต้องทำคือทำให้หน้าจอของคุณเป็นแบบเต็มจอโดยไม่ต้องจับหน้าจอ นี่คือวิธีที่ cocos2d จัดการแอปพลิเคชั่น OS X แบบเต็มหน้าจอในปัจจุบัน คุณสามารถเรียกดูรหัสสำหรับ cocos2d Mac ได้ที่นี่: https://github.com/cocos2d/cocos2d-iphone/tree/master-v2/cocos2d/Platforms/Mac

ดูเฉพาะใน CCDirectorMac.m และ CCGLView.m สำหรับการนำไปใช้งาน

หากคุณพิจารณาว่าคุณต้องการ จำกัด ฟังก์ชั่นบางอย่างเช่นการสลับกระบวนการโดยไม่ จำกัด คุณสมบัติทั้งหมดของระบบหน้าต่างคุณสามารถดูหมายเหตุทางเทคนิคของ Apple Kiosk Mode: http://developer.apple.com /library/mac/#technotes/KioskMode/Introduction/Introduction.html


1

ประสบการณ์ของฉันเกี่ยวกับเรื่องนี้ใน Mac คือปกติแล้วจะมีทางลัดในการออกจากโหมดเต็มหน้าจอเข้าสู่โหมดหน้าต่าง (โดยทั่วไปคือ CMD + M หรือ CMD + Return) เมื่อคุณเปลี่ยนเป็นโหมดหน้าต่างแล้วคุณสามารถเข้าถึงแอปพลิเคชันทั้งหมดของคุณตามปกติ โหมดหน้าต่างยังช่วยให้ผู้ใช้สามารถตรวจสอบเกมของพวกเขาในแอพอื่น ๆ ทั้งหมด ดังนั้นฉันคิดว่าคุณสามารถใช้ฟังก์ชันนี้กับเกมของคุณได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.