如何使用FREEGLUT获得所有支持的多显示器分辨率?

时间:2015-01-05 08:02:46

标签: c++ linux winapi opengl glut

我有windows代码,可以为多个监视器创建可用分辨率列表。

现在我必须在Linux上移植它,所以我想使用“FREEGLUT”,以便我可以使用相同的代码获取Linux和Windows的监视器相关信息。

我需要帮助才能得到一些指针来获得多个监视器的所有支持分辨率。?

我希望我们可以使用免费过剩来做到这一点..

2 个答案:

答案 0 :(得分:1)

Linux本身没有图形系统。你必须依赖X11或Wayland之类的东西。现在X11是通常找到的系统,用于枚举和配置监视器的X11-API称为XRandR。 FreeGLUT并没有真正公开这个功能。所以要么使用自己做的框架,要么自己实现它。

请注意,当涉及多监视器环境时,窗口管理器也会说明窗口放置。

答案 1 :(得分:0)

我正在使用GLFW 3.0.4获得支持多显示器的分辨率。 我更喜欢使用平台特定功能来应用显示器分辨率。

// Get Resolution of Multimonitor
int totalMonitor;
GLFWmonitor** monitors = glfwGetMonitors(&totalMonitor);


printf("\n\n---------------------------------------------------------");
printf("\n Total monitor [%d]",totalMonitor);

printf("\n primary monitor [%s]",glfwGetMonitorName(glfwGetPrimaryMonitor()));
printf("\n\n---------------------------------------------------------");

for(int currMonitor=0;currMonitor<totalMonitor;currMonitor++)
{
    printf("\n monitor name: [%s]",glfwGetMonitorName(monitors[currMonitor]));      

    int count;
    const GLFWvidmode* modes = glfwGetVideoModes(monitors[currMonitor], &count);

    for (int i = 0; i < count; i++)
    {
        printf("\n  %d : [%d X %d]~[%d]",i,modes[i].width,modes[i].height,modes[i].refreshRate);
    }

    printf("\n---------------------------------------------------------");
}