OpenGL遇到这些问题如何解决



  • QOpenGLShaderProgram::addShader: Program and shader are not associated with same context.
    QOpenGLShaderProgram::addShader: Program and shader are not associated with same context.
    QOpenGLShaderProgram::uniformLocation( tex_y ): shader program is not linked
    QOpenGLShaderProgram::uniformLocation( tex_u ): shader program is not linked
    QOpenGLShaderProgram::uniformLocation( tex_v ): shader program is not linked


  • 网站研运

    @p0_chan 你自己开了多线程?一般不会出现这样的错误。



  • 是多线程,那怎么改比较好


  • 网站研运

    @p0_chan 最简单的改为单线程。因为渲染的部分如果没有作保护的话,那么渲染会错乱。



  • 可以多线程的。QT5以后整的复杂了。 创建一个GL context用于新的线程。新线程的context和主线程的context要能够关联起来。新线程的context在使用的时候一定要makecurrent,

    • 使用完后一定要置空。。TMD这问题让老子搞了一天,扒了qt的源码才发现问题。


  • 另外 渲染不要在新线程做。新线程只用于资源加载。TMD还限制三分钟才能回帖。


  • 网站研运

    @qunzhuxiaodi Qt渲染OpenGL多线程,参考Qt的multithreaded rendering相关例子。这里还是觉得Qt这边儿做好了多线程相关的控制了,自己不必再多开一个线程来处理这件事儿。


登录后回复
 

与 萌梦社区 的连接断开,我们正在尝试重连,请耐心等待