2014-10-05 68 views
1

我已经为LWJGL(Java中的OpenGL)编写了一个显示管理器。除了3D渲染部分之外,一切工作都很好。调整大小后OpenGL/GLSL视口剪切

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

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

请记住,二维渲染在屏幕四向渲染后运行良好。

这里有两张截图:

Normal Window

Resized Window

将是很好得到一些提示。

编辑:渲染尺寸hasn`t更新...固定

回答

2

您需要通过调用glViewport来调整视时的窗口大小改变。

3

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

+0

我试了一下,不'吨改变一切。当我使用自己的矩阵系统时,还有另一种方法吗?我自己计算它们并使用GLSL 400。 – bitQUAKE 2014-10-05 16:51:12

0

终于找到了问题:当我调整我的帧缓冲,我错过了更新渲染大小,所以渲染仍然是800×600,但是屏幕为1300 X 900