Jac*_*eng 6 opengl resolution retina-display
我的电脑是配备13英寸视网膜屏幕的Mac专业版.屏幕分辨率为1280*800(默认).
使用以下代码:
gWindow = glfwCreateWindow(800, 600, "OpenGL Tutorial", NULL, NULL);
//case 1
glViewport(0,0,1600,1200);
//case 2
glViewport(0,0,800,600);
Run Code Online (Sandbox Code Playgroud)
情况1导致适合窗口的三角形.
情况2导致三角形的大小是窗口大小的1/4.
视口的一半:
GLFW文档显示以下内容(从此处):
虽然窗口的大小是以屏幕坐标测量的,但OpenGL与像素一起使用.例如,传入glViewport的大小应以像素为单位.在某些机器上,屏幕坐标和像素是相同的,但在其他机器上它们不会.还有第二组函数用于检索窗口的帧缓冲区的大小(以像素为单位).
为什么我的视网膜屏幕坐标值是像素值的两倍?
正如Sabuncu所说,很难知道在不知道如何绘制三角形的情况下哪些结果应该是正确的.
但我想你的问题与视网膜屏幕有关,当你使用2.0比例因子时,你需要渲染两倍的像素,就像你使用普通屏幕一样 - 见这里
您所追求的方法只显示在您的GLFL链接下方几行
还有glfwGetFramebufferSize用于直接检索窗口的帧缓冲区的当前大小.
int width, height;
glfwGetFramebufferSize(window, &width, &height);
glViewport(0, 0, width, height);
Run Code Online (Sandbox Code Playgroud)
帧缓冲区的大小可以独立于窗口的大小而改变,例如,如果窗口在常规监视器和高DPI之间拖动.
在你的情况下,我打赌你得到的帧缓冲区大小将是窗口大小的两倍,你的gl视口需要匹配它.
| 归档时间: |
|
| 查看次数: |
1695 次 |
| 最近记录: |