2009-06-30 28 views
0

私はグラデーションを適用できるように背景として四角形を描画しています。私がこれをやっている方法の詳細は、同様の質問で見つけられます。https://stackoverflow.com/questions/1064840OpenGLのラスターテキストが背景の後ろに消えます

2Dラスタテキスト(スクリーンテキスト)は、グラデーションの背景なしで期待どおりに描画されます。しかし、グラデーションの背景が描かれると、テキストが消えます(私は背景のクワッドの後ろにいると思います)。

¿任意のアイデアですか?

私は

wglUseFontBitmaps HDC, 32, 96, FontID 

を呼び出すことにより、フォントを作成していて、テキストが

wglUseFontOutlines HDC, 0, 255, FontID, 0, 0, WGL_FONT_LINES, GMF(0) 
    or 
wglUseFontOutlines HDC, 0, 255, FontID, 0, 0, WGL_FONT_POLYGONS, GMF(0) 
を使用して、私の3Dテキストは、すべてのケースで正常に描画されている

glRasterPos3d X, Y, Z 
glListBase FontID - 32 

glPushAttribute GL_LIST_BIT 

Dim B() As Byte 
B = StrConv(TextString, vbFromUnicode) 
glCallLists Len(TextString), GL_UNSIGNED_BYTE, B(0) 

glPopAttribute GL_LIST_BIT 

注意を使用して描画されます

と同等の描画ルーチンです。

編集:私は、私が飛び出るされていないはず行列をポップた

を解決しました。

答えて

4

あなたは

glDisable(GL_DEPTH_TEST) 

でテキストを描画する際に、Zバッファを無効にして、あなたが

glEnable(GL_DEPTH_TEST) 

とテキストで終わった後、それを有効にする必要がありますは、Visual内部にそのOpenGLのです基本? Absolutely Hideous ...

+0

Zバッファを無効にしても問題は解決されませんでした。そして、はい、VB6でOpenGLは絶対に恐ろしいです。 – JRS

+0

Zバッファがないので、何も後ろには何もないでしょう。あなたが描く最後のものはテキストです。どうやってそれがうまくいかないのか、より具体的になりますか? – shoosh

+0

私の元の試みでは、私はglDisableとglEnableを逆にしました。私はあなたの提案に正しく従ったので、テキストは背景の上に現れます。しかし、これは最適な解決策ではありません。なぜなら、シーン内の(背景ではない)オブジェクトの後ろにあっても、テキストが常に現れるからです。 – JRS

関連する問題