调整大小后切割OpenGL / GLSL视口

时间:2014-10-05 16:38:55

标签: java opengl viewport projection clip

我为LWJGL(Java中的OpenGL)编写了一个显示管理器。除了3D渲染部分外,一切都很好。

3D渲染部分使用FrameBuffer和Shader。每次调整大小后,我都会使用新大小生成一个新的FrameBuffer和Textures。 Shader不使用任何分辨率制服。

主要问题部分: 当我调整窗口大小时,只显示旧显示大小的框。除了框之外,3D对象在整个屏幕上正常呈现。

请记住,在屏幕四重渲染之后,2D渲染效果很好。

以下是两个屏幕截图:

Normal Window

Resized Window

很高兴获得一些提示。

编辑:RenderBuffer尺寸尚未更新...已修复

3 个答案:

答案 0 :(得分:3)

您还需要将视口设置为窗口或帧缓冲区的大小。 (见glViewport)。最初,当上下文与fisrt绑定时,视口将设置为drawable的大小,但它永远不会被隐含地更新。

答案 1 :(得分:2)

只要窗口大小发生变化,您就需要调用glViewport来调整视口大小。

答案 2 :(得分:0)

终于找到了问题:当我调整FrameBuffer的大小时,我错过了更新渲染缓冲区大小,因此渲染缓冲区仍然是800x600但是屏幕是1300 x 900