0

私はOpenGLの初心者です。簡単なコードを読みます。3つの質問があります。

1-)なぜリシェイプ関数でgluperspective関数が使用されるのですか?

2-)リシェイプ機能は実際に何をしますか?reshape関数を使用してプログラムを実行しても、それがないと実際には何も変わりません。

3)リシェイプ関数はいつ呼び出されますか?ウィンドウのサイズを変更したときにのみ呼び出される場合は、ウィンドウのサイズを変更しないと、reshape関数が呼び出されないため、gluperspectiveは呼び出されません。しかし、gluperspectiveは少なくとも1回は呼び出される必要はありませんか?

悪い英語とばかげた質問でごめんなさい。

4

1 に答える 1

0

1-)なぜリシェイプ関数でgluperspective関数が使用されるのですか?

そのようなコードは通常、OpenGLを理解していないモロンによって書かれているからです。設定マトリックス(それらすべて)は、描画コードに属します。

2-)リシェイプ機能は実際に何をしますか?reshape関数を使用してプログラムを実行しても、それがないと実際には何も変わりません。

reshape関数の正しい使用法は、ウィンドウサイズが変更されたときに実行する必要がある1回限りの操作を実行することです。たとえば、FBOなどの後処理でターゲットとして使用されるテクスチャを再初期化します。画面に三角形を描画するだけの場合は、形状変更ハンドラーは必要ありません。

3)リシェイプ関数はいつ呼び出されますか?ウィンドウのサイズを変更したときにのみ呼び出される場合、(…)

これは、ウィンドウが何もない状態からある長方形に効果的にサイズ変更されるため、ウィンドウが作成されるときにも呼び出されます。

つまり、ウィンドウのサイズを変更しないと、reshape関数が呼び出されないため、gluperspectiveは呼び出されません。

新しいウィンドウを作成すると、ウィンドウのサイズも(再)変更されます。

しかし、gluperspectiveは少なくとも1回は呼び出される必要はありませんか?

あなたの望みがgluPerspective投影であるなら、そうです。技術的にあなたがしなければならないことは、アイデンティティであるかもしれないいくつかの射影変換を設定することです。

ただし、リシェイプハンドラーでは設定しないでください。これを行うことは、描画コードに属します。

とばかげた質問

実際、それらは非常に良い質問です。彼らはあなたが実際にコードについて考えていることを示しています。もっと多くの人がこれをやったらいいのにと思います:)それを続けてください。

于 2013-02-16T18:49:13.833 に答える