gpt4 book ai didi

c++ - QGLWidget 的 glXXX 函数调用是如何处理的?

转载 作者:行者123 更新时间:2023-11-30 02:08:17 24 4
gpt4 key购买 nike

Qt 如何处理 QGLWidget 中对各种 OpenGL 函数(例如 glVertex3f)的函数调用?

这些调用是 QGLWidget 对象的一部分,还是严格意义上的全局命名空间 OpenGL 函数?

从单独的类中绘制 QGLWidget 的最佳做法是什么?

最佳答案

那些 gl ... 函数只是常规的 OpenGL 函数,或者如果正在使用扩展包装器,则解析为包装器符号的宏名称。 QGLWidget 负责 OpenGL 上下文的创建和管理,就像 GLUT 或 GLFW 所做的那样。

QGLWidget 提供了成员函数QGLWidget::makeCurrent,它选择QGLWidget 实例的OpenGL 上下文作为调用QGLWidget::makeCurrent 的线程中的当前上下文。 QGLWidget::swapBuffers 发出双缓冲区交换。使用完 OpenGL 上下文后,比如在渲染器函数的末尾,调用 QGLWidget::doneCurrent ,这会将上下文与当前线程分离;这是使 OpenGL 在多线程程序中工作所必需的——如果您确保所有 OpenGL 操作都是从同一个线程完成的,您可以省略对 QGLWidget::doneCurrent 的调用。

当然,在一个真正的 OOP 时尚程序中,您应该将对另一个类的引用传递给您派生的 QGLWidget,并从 QGLWidget 的绘图处理程序调用那个类的绘图函数。

关于c++ - QGLWidget 的 glXXX 函数调用是如何处理的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7085619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com