[英]Get screen resolution programmatically in OS X
我想在 Mac 上以原始分辨率启动全屏 3D C++ 应用程序。 如何检索本机屏幕分辨率?
如果您不想使用 Objective C,请获取您希望显示的显示 ID(使用例如CGMainDisplayID
),然后使用CGDisplayPixelsWide
和CGDisplayPixelsHigh
获取屏幕宽度和高度(以像素为单位)。 有关如何获取其他显示信息,请参阅“ 获取有关显示器的信息”。
如果您愿意使用一些 Objective-C,只需使用[[NSScreen mainScreen] frame]
。
请注意,全屏显示还有其他问题,即确保其他应用程序不会这样做。 阅读 Apple 的 OpenGL 编程指南中的“ 全屏绘制”以了解更多信息。
如果您正在寻找适用于 mac 和 windows 的多平台解决方案
#include "ScreenSize.h"
#if WIN32
#include <windows.h>
#else
#include <CoreGraphics/CGDisplayConfiguration.h>
#endif
void ScreenSize::getScreenResolution(unsigned int& width, unsigned int& height) {
#if WIN32
width = (int)GetSystemMetrics(SM_CXSCREEN);
height = (int)GetSystemMetrics(SM_CYSCREEN);
#else
auto mainDisplayId = CGMainDisplayID();
width = CGDisplayPixelsWide(mainDisplayId);
height = CGDisplayPixelsHigh(mainDisplayId);
#endif
}
注意:您还需要将 CoreGraphics 框架链接到您的项目。 如果您使用的是 cmake,请像下面这样链接您需要的框架:
target_link_libraries(${PROJECT_NAME}
"-framework CoreGraphics"
"-framework Foundation"
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.