我为LWJGL(Java中的OpenGL)编写了一个显示管理器。除了3D渲染部分外,一切都很好。
3D渲染部分使用FrameBuffer和Shader。每次调整大小后,我都会使用新大小生成一个新的FrameBuffer和Textures。 Shader不使用任何分辨率制服。
主要问题部分: 当我调整窗口大小时,只显示旧显示大小的框。除了框之外,3D对象在整个屏幕上正常呈现。
请记住,在屏幕四重渲染之后,2D渲染效果很好。
很高兴获得一些提示。
编辑:RenderBuffer尺寸尚未更新...已修复
答案 0 :(得分:3)
您还需要将视口设置为窗口或帧缓冲区的大小。 (见glViewport
)。最初,当上下文与fisrt绑定时,视口将设置为drawable的大小,但它永远不会被隐含地更新。
答案 1 :(得分:2)
只要窗口大小发生变化,您就需要调用glViewport
来调整视口大小。
答案 2 :(得分:0)
终于找到了问题:当我调整FrameBuffer的大小时,我错过了更新渲染缓冲区大小,因此渲染缓冲区仍然是800x600但是屏幕是1300 x 900