【发布时间】:2013-12-21 15:04:10
【问题描述】:
我正在尝试渲染 2D 图像,以便它完全覆盖整个窗口。
对于我的测试,我设置了一个窗口,使客户区正好是 320x240,纹理也是这个大小。
我将正交投影设置为以原点为中心的 1x1x1 立方体,并将视口设置为 0,0,320,240
纹理被映射到以原点为中心的大小为 1x1 的四边形。
着色器是执行 ProjModelViewPos
我创建了一个测试纹理,可以让我验证渲染,我看到了我无法摆脱的一致差异。
渲染的结果总是有些拉伸,将一些像素放在窗口的右边,并且似乎总是相同的数量,不管窗口大小(相同数量的像素,如果我替换320x240 由另一个值)
我认为它与窗口装饰宽度有关,但我不确定如何修复它,因此解决方案不是特定于平台/机器的。
编辑:
代码是使用 freeglut 和 glew 的直接 C++
已验证如果我调用 glutFullScreen 不会发生这种情况,因此它肯定与窗口模式有关。
【问题讨论】:
-
找到问题来源。我在初始化的早期设置了视口,一些库函数将其重置为更小的视口。在渲染循环中添加 glViewport 调用解决了这个问题。
标签: c++ opengl textures 2d rendering