使用freeglut图书馆玩了一段时间的OpenGL,我决定将GLFW用于我的下一个培训项目,因为我被告知GLUT仅用于学习目的,不应该专业使用.我将lib链接到我的NetBeans项目没有问题,使用mingw32 4.6.2编译得很好.
但是,我在尝试将窗口定位在屏幕中心时遇到了困难.在freeglut下,我以前用过:
glutInitWindowPosition (
(glutGet(GLUT_SCREEN_WIDTH)-RES_X) / 2,
(glutGet(GLUT_SCREEN_HEIGHT)-RES_Y) / 2
);
Run Code Online (Sandbox Code Playgroud)
我找不到任何会返回屏幕大小或宽度的glfw函数.这样的功能根本没有实现吗?
怎么样glfwGetDesktopMode,我觉得这就是你想要的.
例:
GLFWvidmode return_struct;
glfwGetDesktopMode( &return_struct );
int height = return_struct.Height;
Run Code Online (Sandbox Code Playgroud)
首先,您需要两个变量来存储宽度和高度.
int width, height;
Run Code Online (Sandbox Code Playgroud)
glfwSetWindowPos(width / 2, height / 2);
Run Code Online (Sandbox Code Playgroud)
然后作为奖励你可以打电话
glfwGetWindowSize(&width, &height);
Run Code Online (Sandbox Code Playgroud)
这是一个void函数,并且不会返回任何值,但它会更新两个先前声明的变量..所以将它放在mainloop或window reshape回调函数中.
您可以在官方手册验证这个位置第15页.
这可能会帮助某人...
void Window::CenterTheWindow(){
GLFWmonitor* monitor = glfwGetPrimaryMonitor();
const GLFWvidmode* mode = glfwGetVideoMode(monitor);
glfwSetWindowPos(m_Window, (mode->width - m_Width) / 2, (mode->height - m_Height) / 2);
}
Run Code Online (Sandbox Code Playgroud)
m_Width和m_Height是具有窗口宽度和高度的变量。
参考: http: //www.glfw.org/docs/latest/monitor.html
| 归档时间: |
|
| 查看次数: |
16609 次 |
| 最近记录: |