我有一个使用 SharpGL 用 c# 编写的简单 OpenGL 程序。
该程序从文件中获取一系列点并使用 GLBegin/GLEnd 方法呈现它们。
那部分工作正常。当我尝试更改调整渲染的视角时,我的问题出现了。如果我改变 OpenGLControl 的大小和位置,然后调用:
public void AdjustPerspective(double width, double height)
{
_gl.MatrixMode(OpenGL.GL_PROJECTION);
_gl.LoadIdentity();
_gl.Perspective(45.0f, width / height, .1, 400.0);
_gl.MatrixMode(OpenGL.GL_MODELVIEW);
}
渲染开始延伸到屏幕之外。
它应该是什么样子:
现在,这并不总是发生,它只发生在调用 AdjustPerspective 方法之后。
该方法从在调整 OpenGLControl 大小时调用的事件中调用。
我对此完全不知所措,因为它并不总是发生。我的第一个想法是它与近平面有关,但鉴于它并不总是发生,那不可能。
我唯一的想法是 glPerspective 在多次调用时会产生一些不利影响。
如果有帮助,也可以从事件中调用绘图调用。