我正试图把一些OpenGL命令放到一个外部库中。具体来说,我目前正在用Tcl语言绘制一个3d场景,现在我想把一些openGl函数(例如绘图函数)放到一个dll(用C编程)中,并从Tcl加载它。这是因为我将有大量的数据呈现。有了编译过的C库,运行起来会更快。
不过,我这样做有问题。当我启动程序时,“wglMakeCurrent failed”错误发生在第二次运行display回调函数之前。
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
}

有什么帮助或建议吗?

最佳答案

我终于在我的代码中找到了那个愚蠢的错误。。
在C函数中,我写的是“glEnd”,而不是“glEnd()”。我在转换tcl的代码时忘了!
希望这能帮助那些有类似wglMakeCurrent失败错误的人。。。
很好的调试

关于c - 将一些OpenGL命令打包到动态库中,“wglMakeCurrent失败”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16016300/

10-12 05:55