我的MacBook屏幕上的GLFW有一个奇怪的问题。我正在我的近4k屏幕上创建一个1400×900像素的窗口(3456x2234),所以它应该是非常小的。相反,窗口是大小的4倍(长度和高度加倍),而我呈现的内容只显示在屏幕的左上角。

我知道,苹果做一些粗略的地图,因为他们的奇怪的纵横比显示,但我搜索了很长一段时间,没有人有同样的问题。
更奇怪的是,如果我在外部显示器上创建这个窗口并将其拖到笔记本显示器上,它就能正常工作。只有在笔记本电脑显示器上创建时,它才会搞砸。
我在macOS蒙特利12.1上使用GLFW 3.3和Vulkan 1.2.198
任何帮助都是非常感谢的。
编辑:在我的代码中尝试了几乎所有可能的东西之后,在使用GLFW入门示例的最小示例时得到了相同的错误,我得出的结论是,这与注释中指出的代码无关。
发布于 2022-11-23 03:02:37
这似乎是Mac显示器如何报告其解决方案的一个问题。请注意,这不是一个银弹,但当面对同样的问题,这对我有效。
缺点是,由于Mac显示缩放的方式,用于计算视图的值是不正确的。我找到的解决办法是问GLFW你应该设置什么。
要获得这些值,只需使用以下函数调用即可。我不知道在vulkan中glViewport的等效值是什么,但理论上这应该是可行的,并且在OpenGL中也为我解决了同样的问题。
int initial_framebuffer_width, initial_framebuffer_height;
glfwGetFramebufferSize(g_glfw_window, &initial_framebuffer_width,
&initial_framebuffer_height);
// Set your viewport here with the width and height.如果这不起作用,一个好的调试步骤是绘制窗口,然后尝试调整窗口的大小,然后打印GLFW在框架缓冲区回调中给出的宽度和高度值。您应该注意到,它们可能比您设置的要大得多,这就是您知道这是缩放问题的原因,上面的代码应该会给出您要寻找的内容。
https://stackoverflow.com/questions/70907459
复制相似问题