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