Java 调整大小后的OpenGL/GLSL视口剪切

Java 调整大小后的OpenGL/GLSL视口剪切,java,opengl,viewport,projection,clip,Java,Opengl,Viewport,Projection,Clip,我已经用Java为LWJGL OpenGL编写了一个显示管理器。除了3D渲染部分外,其他一切都很好 3D渲染部分使用帧缓冲区和着色器。每次调整大小后,我都会生成一个新的帧缓冲区和具有新大小的纹理。着色器未使用任何分辨率 主要问题部分: 调整窗口大小时,只有旧显示大小的框可见。3D对象通常在除长方体之外的整个屏幕上渲染 请记住,屏幕四边形渲染后的2D渲染效果良好 以下是两个屏幕截图: 很高兴能得到一些提示 编辑:RenderBuffer大小尚未更新。。。修复了每当窗口大小改变时调用调整视口大小的问

我已经用Java为LWJGL OpenGL编写了一个显示管理器。除了3D渲染部分外,其他一切都很好

3D渲染部分使用帧缓冲区和着色器。每次调整大小后,我都会生成一个新的帧缓冲区和具有新大小的纹理。着色器未使用任何分辨率

主要问题部分: 调整窗口大小时,只有旧显示大小的框可见。3D对象通常在除长方体之外的整个屏幕上渲染

请记住,屏幕四边形渲染后的2D渲染效果良好

以下是两个屏幕截图: 很高兴能得到一些提示


编辑:RenderBuffer大小尚未更新。。。修复了每当窗口大小改变时调用调整视口大小的问题。

每当窗口大小改变时调用调整视口大小的问题。

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

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

最终发现问题:当我调整帧缓冲区大小时,我没有更新renderbuffer大小,因此renderbuffer仍然是800x600,但屏幕是1300 x 900

最终发现问题:当我调整帧缓冲区大小时,我没有更新renderbuffer大小,所以renderbuffer仍然是800x600,但是屏幕是1300 x 900

我试过了,它没有改变任何东西。当我使用自己的矩阵系统时,还有其他方法吗?我自己计算并使用GLSL 400。我试过了,它没有改变任何东西。当我使用自己的矩阵系统时,还有其他方法吗?我自己计算并使用GLSL 400。