gpt4 book ai didi

c++ - QGLWidget 中的 makeCurrent() 在哪里使用?

转载 作者:行者123 更新时间:2023-11-28 00:11:26 25 4
gpt4 key购买 nike

qt的文档说:

Your widget's OpenGL rendering context is made current when paintGL(), resizeGL(), or initializeGL() is called. If you need to call the standard OpenGL API functions from other places (e.g. in your widget's constructor or in your own paint functions), you must call makeCurrent() first.

对于以下情况:

paintGL()
{
drawSomething();
}
...
drawSomething()
{
glClearColor()...
//many other gl calls...
}

我是否必须在 drawSomething() 函数中创建 Current。

如果我只调用 QPainter 而不是标准的 OpenGL API 函数。我必须使用 makeCurrent 吗?

最佳答案

do I have to makeCurrent inside the drawSomething() function.

如果该函数仅从 paintGL 调用,则不会,因为 Qt 将调用 paintGL,上下文已经是当前的。

正如文档所说,只要您需要其他函数中的当前 GL 上下文,您就会需要它。

// called from other code, context may not be current
void MyGLWidget::setBackgroundColor(const QColor &color) {
makeCurrent();
glClearColor(color.redF(), color.greenF(), color.blueF(), color.alphaF());
}

关于c++ - QGLWidget 中的 makeCurrent() 在哪里使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32920024/

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