1

OpenGL コマンドのいくつかを外部ライブラリに入れようとしています。具体的には、現在 Tcl 言語で 3D シーンを描画していますが、いくつかの openGl 関数 (描画関数など)を dll (C でプログラム) に入れ、 Tclからロードしたいと考えています。これは、レンダリングするデータが大量になるためです。コンパイル済みの C ライブラリを使用すると、より高速に実行されます。

しかし、私はそうするのに問題があります。プログラムを起動すると、ディスプレイ コールバック関数の 2 回目の実行の直前に「 wglMakeCurrent failed」エラーが発生します。

Tcl と C の両方の部分が同じスレッド IDを報告します。したがって、マルチスレッドとコンテキスト共有の問題について心配する必要はないと思います。

これは私の表示コールバック関数です:

proc DisplayCallback { toglwin } {

    # adjust camera and objects ... 

    if {[catch {set cubeList [ExternalDrawCube $::cube(size)]}]} {
        puts "Catch drawcube error !!"
    } else {
        glCallList $cubeList
    }

    $toglwin swapbuffers
}

ヘルプや提案はありますか?

4

1 に答える 1

1

私は最終的に自分のコードで行った愚かなバグを見つけました..

C関数では、「 glEnd()」の代わりに「glEnd 」と書きました。Tcl からコードを変換するときに忘れていました。

うまくいけば、これは同様の wglMakeCurrent failedエラーを抱えている人々に役立つでしょう...

すべての人にとって適切なデバッグ

于 2013-04-18T14:15:33.480 に答える