2012-02-21 9 views
2

私は、ジオメトリにGL_QUADSが使用されているCADジオメトリを、テキストで注釈を付けるglutBitmapCharacterを視覚化しようとしています。OpenGL:GL_QUADSはglutBitmapCharacterの一部を隠します

GL_QUADSは、一部のビューの向き(図1)に対してテキストを部分的に非表示にします(例:33,32、...)。

Picture 1: Obscured annotation

私は、テキストが正しく表示取得するまたはglDisable(GL_DEPTH_TEST)を使用している場合は、私が裏面に注釈を付けることになっているテキストも(写真2)が表示され得ます。

Picture 2: Back surf annotation is shown

私の目的は隠さなく、図示しない裏面に注釈を有することなく、可視フロント面に注釈を付けることです。

(私は少しクワッドに通常の注釈をオフセットすることにより、これを解決することができていますが、これは私に私のプログラムでは、いくつかの他の問題が発生しますので、私はこのソリューションを好まない)

誰かが提案してもらえ私は解決策ですか?

+0

この種のものを完璧に稼働させるのは難しいことです。テキストをわずかにオフセットするのが最も簡単な方法です。また、深度テストをオフにしてから、ラベルを描画する前に面の可視性をテストすることもできます。 –

答えて

1

あなたがすでに知っていることを期待しているように、テキストは位置/向きの仕方によって切断されているように見えます。これは、ポイントから右にスクリーンから描かれています。

これをオフセットしたくない場合(すでに述べたように、単純な解決策であることを示唆していますが)、オブジェクトを回転させるのと同じ方法でテキストを回転させる方法があります。これは、あなたが各クワッドを描いた同じ場所にテキストを描画する場所を変えるということです(つまり、同じマトリックスを使用しています)。もちろん、テキストは見やすいものではありません。このソリューションは、テキストをレンダリングするためのさまざまなオブジェクトを使用する必要があります、などFreeType Fonts.

EDIT 2:別の解決策はtexture-mapped text

+0

提案していただきありがとうございますが、glutBitmapCharacterはテキストを直接レンダリングするだけですか?それを回転させることは可能でしょうか? –

+0

申し訳ありませんが、目標はテキストであり、特定のオブジェクトタイプではないという前提もありました。そのような例は、FreeTypeフォント(http://nehe.gamedev.net/tutorial/freetype_fonts_in_opengl/24001/、またはhttp://stackoverflow.com/questions/1085832)です。 テキストをレンダリングする他の方法を使用する場合は、テクスチャマップテキストを使用することもできます。この資料は、あなたの非常に問題の一部をカバーしているようです: ftp://ftp.sgi.com/opengl/contrib/mjk/tips/TexFont/TexFont.html – DRobinson

0

だろう誰かが私に解決策を提案してくださいもらえますか?

衝突検出エンジンを実装する必要があります。

ラベルを表示する必要がある3D空間内の点が不明瞭でない場合、深度テストが無効なテキストをレンダリングします。これで問題は完全に解決されます。

あなたが何をしていても、何か他のものによって部分的に隠されている可能性が常に高いでしょう。 。

非常に特定の種類の衝突検出(ポイントの可視性を検出する)が必要なので、select bufferを使用してこの問題を解決できます。一方、複雑なシーンでは事態がより複雑になりますが、シーングラフを実装してオクツリーに似たアルゴリズムを使用する必要がありますが、ray/triangle(gluUnProject/gluProject参照)の衝突を検出することは難しくありません。

+0

提案のおかげで、私は選択バッファを使用しようとします。 –

関連する問題