0

GLUT を使用せずに、プラットフォームに依存しない方法で深度バッファを使用して OpenGL を初期化したいと考えています。

c# ラッパーを使用して OpenGL シーンで隠面を削除する方法。私は GLUT を使用していないので、glutInitDisplayMode を使用できません。何か案が?


詳細については:

Hidden-Surface の削除に関する次の手順を見つけました。

  1. glutInitDisplayMode による z-buffer のリクエスト:

    // GLUT_DEPTH to request for depth-buffer
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
    
  2. 深度テスト用に z-buffer を有効にします。

    glEnable(GL_DEPTH_TEST);
    
  3. カラー バッファーをクリアするときに、z バッファーをクリアします。

    // Clear color and depth buffers
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  
    

私が知っているように、glutInitDisplayMode は GLUT 関数の 1 つです。悪影響を与えずにこの呼び出しを削除できますか。そうでない場合、トリックを行う代替の純粋なopengl呼び出しは何ですか。

(Colin P. Fahey)によって書かれた ac# ラッパーを使用しています

4

3 に答える 3

2

GLUT は OpenGL ではありません!

GLUT が何をするにせよ、おそらく C# ラッパーもそれを提供しており、おそらくそれよりも優れています。必要なのは、深度バッファと深度テストの有効化です。


質問の編集を反映して更新

深度バッファを取得するための正確な手順は、使用するラッパーに完全に依存します。したがって、それがどのラッパーであるかを伝えることが不可欠です。

于 2012-07-02T12:15:23.573 に答える
0

そうではないインターフェースの使用を検討したことがありますか...奇妙なことですか?私はすべて、ランダムな人々によって書かれたさまざまで興味深いツールを見つけることに尽力していますが、そのドキュメントはかなりひどいものです。

調べてみたところ、InitializeOpenGLコマンドでは、GL初期化のパラメーターを設定できないようです。まったく。つまり、あなたはほとんどコントロールに翻弄されているということです。

さて、それはおそらくデフォルトであなたにデプスバッファを与えるでしょう(そしてそうでなければ非常に率直に言って、それは完全に無価値であり、あなたはすぐにそれを放棄するべきです)。しかし、バッファで何をしたいのかを伝える方法がないため、それを確実にするためにできることは何もありません。

個人的には、このツールを捨てて、 OpenTKのようなもっと主流のものを使用することをお勧めします。確かに、OpenTKの安定リリースはかなり古いものですが、現在使用しているものよりも優れています。

于 2012-07-03T15:53:36.453 に答える
0

OpenGL は、プラットフォームに依存しないレンダリング API です。ウィンドウ システムの OpenGL コンテキストの作成は、ウィンドウ システム インターフェイス (たとえば、WGL ) の仕事です。

使用している C# バインディングに応じて、 wgl または glx を直接呼び出すか、GLUT のようなプラットフォームに依存しない一連のウィンドウ呼び出し ( OpenTKの場合) が必要になる場合があります。使用しているバインディングをお知らせいただければ、より詳しい情報を提供できます。

于 2012-07-02T13:24:51.437 に答える