关于 Qt 中opengl 原生函数的问题



  • 大家好,我最近在 QT中使用QopenglWindow, 碰上一些问题。特地寻求帮助
    就是:
    首先和通常一样,使用 QopenglWindow 的派生类,进行渲染。
    而 这个类里面有 有两个 Class A ,B;
    //对应着两种不同的模型。【作用 都是 生成模型数据 以及 绑定模型数据】

    如果 在initializeGL 就创建这两个类
    m_pA= new A(this);
    m_pB = new B(this);
    那么就成功的绑定相应顶点数据
    以及 完成相应的渲染;
    //---------至此 都是 正常的--------------//

    但是 由于 B模型 ,加载速度太慢了 调试会花费过多的时间,
    所以 选择视情况 加载 Class B
    //即 根据按钮的点击
    void on_button_click().....//下
    {
    m_pB = new B(this);
    }
    //---------这时候 问题就出现了--------------//
    发现 每次渲染的时候都会 DLL冲突

    后来检查了一下发现

    //------------Class B-------
    使用 glGenVertexArrays (1, &meshes[i].VAO)//GLuint VAO
    glBindVertexArray(mesh.VAO);
    //生成的 mesh.VAO 为从 2到66
    //看起来是没问题的 因为 如果生成错误的情况下 会是125511251之类的数字

    //------------Class A-------
    可是 Class A 中 的VAO 相应的 ID 是 从 2到 17;

    就是说 A与B 的VAO 重复了。// 所以 冲突了【这是我猜的。。。】

    //总结
    所以 为什么A与B的 VAO 会重复。。。应该如何修改。。

    或者 是其他的错误。。??那么 解决的思路?

    例如 上下文之类的错误? //

    不知道我说清楚了没有。。。。。。望请见谅
    //另外 我要上课了。。。。如果有人回复的话,谢谢你 下课才能回来看看



  • @数学物理方法 说:

    //------------Class B-------
    使用 glGenVertexArrays (1, &meshes[i].VAO)//GLuint VAO
    glBindVertexArray(mesh.VAO);

    VAO重复的话,那么判断一下,再执行glGenVertexArrays函数,直到和原来的不一样为止。由于我不清楚你的源代码究竟是如何,所以也不好判断。



  • @jiangcaiyang123
    谢谢 我试试。


登录后回复
 

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