2009-08-21 10 views
-1

OpenGLで作成された一連のスクロールウィンドウを作成しています。このコードは従来のコードであり、これを正常に実行することができます。次に、これらのスクロールリストにテキストを追加したいのですが、これは描画コールバック関数で行います。ウィンドウにスクロールリストが表示されると、ドローコールバックによってテキストがリストに印刷されます。これは通常動作します。しかし、7番目のリストにスクロールすると、テキストの印刷が中止されます。私はそれを選択することができますが、テキストを印刷しません。スクロールウィンドウへのOpenGL印刷テキスト

void PrintString(const char *str, int ListBase) 
{ 
    glPushAttrib(GL_LIST_BIT) 
    glListBase(ListBase) 
    glCallLists(strlen(str), GL_UNSIGNED_BYTE, str) 
    glPopAttrib() 
} 

私は各リストをスクロールするので、これを複数回呼び出しています。この関数に到達し、最初の6つのスクロールリストのテキストを表示します。 7に達すると、テキストの印刷が中止されます。私はこの問題について数時間を費やしており、OpenGLでテキストを印刷しているという結論に達しました。助けてください。 OpenGLでテキストをどのように印刷するのですか?私のフォントは既に定義されていますか?それはなぜそれを印刷しないでしょうか?

+0

charがとりうる256個の異なる値の表示リストがありますか? – genpfault

答えて

1

コードの変更を最小限に抑えてデバッグしたい場合は、gDEBuggerを参照してください。それは、基本的には、このようなことを調べるときには元気に留まる唯一の方法です。

テキストレンダラーの書き換えを検討する場合は、小さなブロックをオフスクリーンバッファー(CairoAnti-GrainまたはWindows APIを使用)に描画し、テクスチャーとしてアップロードして描画することを検討する必要があります。これにより、レンダリングの品質(適切なカーニングなど)と速度の両方が改善され、さらにOpenGL呼び出しをデバッグするのに簡単に使用するだけで済みます。

関連する問題