当透视变化时,OpenGL绘图会从屏幕上拉伸

时间:2013-06-06 18:13:51

标签: c# opengl

我有一个使用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);
    }

渲染开始从屏幕伸出。 What the problem looks like

应该是什么样的:

What it should look like

现在,这并不总是会发生,而且只有在调用AdjustPerspective方法之后才会发生。

从调整OpenGLControl大小时调用的事件调用该方法。

我完全不知所措,因为它并不总是发生。我的第一个想法是它与近平面有关,但看到它并不总是发生,那就不可能了。

我唯一的想法是glPerspective在被多次调用时会产生一些不利影响。

如果有帮助,也会从事件中调用绘制调用。

1 个答案:

答案 0 :(得分:0)

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