gpt4 book ai didi

opengl - 为什么retina屏幕坐标值是像素值的两倍

转载 作者:行者123 更新时间:2023-12-04 13:58:35 26 4
gpt4 key购买 nike

我的电脑是 13 英寸视网膜屏幕的 Mac pro。屏幕分辨率为 1280*800(默认)。

使用以下代码:

gWindow = glfwCreateWindow(800, 600, "OpenGL Tutorial", NULL, NULL);

//case 1
glViewport(0,0,1600,1200);
//case 2
glViewport(0,0,800,600);

案例 1 生成一个适合窗口的三角形。

案例 2 生成的三角形是窗口大小的 1/4。

一半的视口(viewport):

enter image description here

GLFW 文档指出以下内容(来自 here):

While the size of a window is measured in screen coordinates, OpenGL works with pixels. The size you pass into glViewport, for example, should be in pixels. On some machines screen coordinates and pixels are the same, but on others they will not be. There is a second set of functions to retrieve the size, in pixels, of the framebuffer of a window.



为什么我的视网膜屏幕坐标值是像素值的两倍?

最佳答案

Sabuncu如果不知道如何绘制三角形,很难知道什么结果应该是正确的。

但我想您的问题与使用视网膜屏幕的事实有关,当您使用 2.0 比例因子时,您需要渲染两倍于普通屏幕的像素 - see here

您所追求的方法仅显示在您的 GLFL 链接下方几行

There is also glfwGetFramebufferSize for directly retrieving the current size of the framebuffer of a window.


int width, height;
glfwGetFramebufferSize(window, &width, &height);
glViewport(0, 0, width, height);

The size of a framebuffer may change independently of the size of a window, for example if the window is dragged between a regular monitor and a high-DPI one.



在您的情况下,我打赌您将获得的帧缓冲区大小将是窗口大小的两倍,并且您的 gl 视口(viewport)需要与之匹配。

关于opengl - 为什么retina屏幕坐标值是像素值的两倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36672935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com