尝试通过调用&的glfwCreateWindow()
大值来获得大的初始帧缓冲区,并立即切换到使用所需的实际初始窗口大小显示较小的窗口.width
height
glfwSetWindowSize()
或者,使用注册自己的帧缓冲区大小回调函数, glfwSetFramebufferSizeCallback()
并根据您的要求将帧缓冲区设置为大尺寸,如下所示:
void custom_fbsize_callback(GLFWwindow* window, int width, int height)
{
/* use system width,height */
/* glViewport(0, 0, width, height); */
/* use custom width,height */
glViewport(0, 0, <CUSTOM_WIDTH>, <CUSTOM_HEIGHT>);
}
Run Code Online (Sandbox Code Playgroud)
更新:在窗口重新调整大小(和窗口拖动)操作期间看到
的渲染管道停顿是由于窗口管理器中实现的阻塞行为.
为了在一个应用程序中缓解这种情况,需要为窗口消息安装处理函数,并在独立于主应用程序(GUI)线程的单独线程中运行渲染管道.
GLFW文件说:
GLFW现在支持Windows和OS X上的高DPI监视器,提供窗口全分辨率帧缓冲区,其他UI元素按比例放大.为此,添加了glfwGetFramebufferSize()和 glfwSetFramebufferSizeCallback().这些使用像素,而GLFW API的其余部分使用屏幕坐标.
AFAIK,在文档中似乎几乎所有关于高DPI的内容.
通过代码去,我们可以看到,在Windows上,GLFW挂接到的SetProcessDPIAware()
和platformInit过程中调用它.目前我无法在mac上找到任何类似的高DPI支持代码.