我有一个使用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在被多次调用时会产生一些不利影响。
如果有帮助,也会从事件中调用绘制调用。
答案 0 :(得分:0)
我最初通过在初始化OpenGLControls时将RenderContextType设置为SharpGL.RenderContextType.NativeWindow来修复它