1

我正在尝试将我的一些 OpenGL 命令放入外部库中。具体来说,我目前正在使用 Tcl 语言绘制 3d 场景,现在我想将一些 openGl 函数(例如绘图函数)放入 dll(用 C 编程)并从Tcl加载它。这是因为我将要渲染大量数据。使用已编译的 C 库,它将运行得更快。

但是,我这样做有问题。当我启动我的程序时,在我的显示回调函数第二次运行之前出现“ 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 失败错误的人......

对所有人都很好的调试

于 2013-04-18T14:15:33.480 回答