0

我有一个使用 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 在多次调用时会产生一些不利影响。

如果有帮助,也可以从事件中调用绘图调用。

4

1 回答 1

0

我最终通过在初始化 OpenGLControls 时将 RenderContextType 设置为 SharpGL.RenderContextType.NativeWindow 来修复它

于 2013-06-07T16:05:00.947 回答