6

私はOpenGL(より具体的にはlwjgl)でGUIを作成しています。私はこれを行うためのさまざまな方法を研究するために一生懸命努力しましたが、私は自分が欲しいものを正確に見つけるのに苦労しています。外部ライブラリ(OpenGLで構築されたライブラリのみ、GLUTの使用を避けようとしているもの)を使用したくないので、OpenGLをサポートするすべてのもので動作させたいです(例:フレームバッファオブジェクトは古いものでは動作しません)グラフィックカード)。

スクロール可能なパネルをコンポーネントとして使用して3DGUIを作成しています。問題は、GUIコンポーネントの一部のみをレンダリングするために多くの計算を行わずに、部分的なGUIコンポーネントを描画する方法がわからないことです。テクスチャではなく、OpenGLプリミティブからコンポーネントを作成しています。複数のビューポートを使用するような簡単な方法があることを望んでいました。ビューポートが何であるかさえ本当に理解していません。

つまり、他のGUIコンポーネントとオーバーラップするコンポーネントとしてスクロール可能なパネルが必要であり(ドロップダウンメニューになるため)、パネル内のどのコンポーネントもパネルの外側に描画されないようにする必要があります。

4

2 に答える 2

7

長方形の領域の外側にあるピクセルを描画しないようにしたい場合(そしてそれがあなたが求めているものだと思います)、glScissorまさにあなたが探しているものよりも。

lwjglでは、関数はにありorg.lwjgl.opengl.GL11ます。

于 2012-06-19T05:00:46.517 に答える
1

画面上の固定領域内でより大きなシーンをスクロールする場合、最も簡単な方法は、スクロール位置の投影マトリックスを変更してシーンを再描画することです。gluPerspectiveを使用して射影行列を設定している場合は、それをglFrustumへの直接呼び出しに変換する必要があります。glOrthoを使用している場合は、はるかに簡単です。

パースビューを「スクロール」することは、物事を行うための正しい方法が1つではないことに注意してください。これは、達成したい効果の種類と、ビューポート全体の端の近くに必要な特定の種類の歪みによって異なります。

于 2012-06-19T05:16:32.663 に答える