3

我正在创建一个采用 OpenGL 场景图并用于QGLFrameBufferObject渲染结果的类。为了支持(实际上)无限大小,我使用平铺来提取许多可以在渲染所有平铺后组合成大图像的小图像。

我通过glViewport为整个图像设置glScissor视口(这适用于高达 的分辨率GL_MAX_VIEWPORT_DIMS,但会导致超出此限制的空图块。

我应该如何解决这个问题?我需要改变相机还是有什么巧妙的技巧可以做到这一点?我正在使用 Coin/OpenInventor,因此也非常欢迎针对这些框架的任何提示。

4

3 回答 3

2

改变相机并不像你想象的那么难,这是我除了修改顶点着色器之外唯一能看到的解决方案。

通过沿 x 和 y 轴缩放和平移投影矩阵,您可以轻松获得普通相机视图的任何子区域。

对于给定的视口最大值和最小值,其中完整视口为 (-1, -1) 和 (1, 1),平移 (max + min) / 2,缩放 (max - min) / 2。

于 2011-10-27T18:17:56.187 回答
1

试试OpenGL Tile Rendering Library

于 2011-10-27T14:01:43.130 回答
0

您可以尝试缩小整个世界,间接使视口最大值占更大的细节。或者基本上,您可以缩小图像和视口并具有相同的视觉效果。

于 2011-10-27T13:48:59.497 回答