我想为这个令人困惑的头衔道歉。我将在这里详细解释。
我正在通过this网络侧学习帧缓冲。
我们想要为屏幕外渲染创建一个帧缓冲区,然后将其作为一个图像渲染回屏幕。在我自己尝试编码并从source code复制之后,我发现屏幕上的渲染图像呈现出奇怪的效果。
通过大量的重读和观察,我发现显示的图像只捕获原始图像的1/4(屏幕外渲染的图像),这是左下角的部分。我想这可能是因为Mac的视网膜显示器。所以我设置了这个
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 2 * SCR_WIDTH, 2 * SCR_HEIGHT, 0, GL_RGB,
GL_UNSIGNED_BYTE, NULL);
并将缓冲区存储设置更改为
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, 2 * SCR_WIDTH, 2 * SCR_HEIGHT);
最初设置 width
和height
时不会加倍。我得到了预期的结果。创建窗口的宽度和高度不会加倍。
任何人都可以解释它背后的理论吗?为什么在实际窗口保持原始宽度和高度设置时,我需要将屏幕外渲染的宽度和高度加倍。