gpt4 book ai didi

c++ - QGLWidget paintEvent : where to initialize openGL?

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

QGLWidget 的paintEvent 方法似乎是在initializeGL 之前调用的,那么我应该把我的openGL 初始化代码放在哪里呢?

我像这样将它放入 paintEvent 方法中:

void MyGLWidget::paintEvent(...)
{
makeCurrent();
..save modelview and projection matrices..

// This is initialization code

GLenum init = glewInit();
if (GLEW_OK != init)
{
/* Problem: glewInit failed, something is seriously wrong. */
qWarning() << glewGetErrorString(init);
}

// Dark blue background
glClearColor(0.2f, 0.0f, 0.5f, 0.0f);
// Enable depth test
glEnable(GL_DEPTH_TEST);


// End initialization code

... drawing code

QPainter painter(this);
...overpainting..

}

我真的不喜欢每次引发 paintEvent 时都调用我的 glew 库初始化函数的想法……尽管这很有效。

有什么建议吗?

最佳答案

您必须在 initializeGL() 中初始化 OpenGL,没有其他选择。

但是你还得在里面画paintGL ,而不是在 paintEvent 内部,所以这就是你的错误所在。

关于c++ - QGLWidget paintEvent : where to initialize openGL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11546834/

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