我无法在 QOpenGLWidget 上绘画

Posted

技术标签:

【中文标题】我无法在 QOpenGLWidget 上绘画【英文标题】:I can't paint on QOpenGLWidget 【发布时间】:2019-07-18 16:08:35 【问题描述】:

我是 Qt 的新手,我正在制作一个应用程序,它可以生成一个 3D 对象,其中包含用户在 GUI 中提供的一些点。用户定义点,然后在同一个窗口中,QOpenGLWidget 绘制最终对象。但是,QOpenGLWindow 不绘制模型(只有 GlCLearColor)。我已经尝试过相同的功能,但在 main 中的 app.exec() 之前调用了它,它工作正常。

我不知道发生了什么。在使用 vao 和 vbo 之前,我曾尝试调用 makeCurrent(),但它不起作用。

我还没有创建任何线程,也没有 fbo。

当我在使用 vao 和 vbo 之前尝试 makeCurrent 时,我得到: “QOpenGLBuffer::bind: 缓冲区在当前上下文中无效” “QOpenGLShaderProgram::bind: 程序在当前上下文中无效。”

编辑我在 vao、vbo 和着色器绑定之前重试了当前状态,消息消失了,但小部件没有绘制对象。

绘制后我也尝试过 QOPenGLWidget::update()。它不会通过调整大小来绘制。 我正在使用 OpenGL 4.1 核心配置文件和 Qt 5.12.3

【问题讨论】:

【参考方案1】:

我已经解决了!我只是忘记在着色器中设置统一值之前设置当前值。

【讨论】:

以上是关于我无法在 QOpenGLWidget 上绘画的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 QOpenGLWidget 读取 GL_DEPTH_COMPONENT

Qt QOpenGLWidget glClearColor 无法正常工作

如何在 Android 上使用 QOpenGLWidget?

Qt OpenGL (QOpenGLWidget) - 简单三角形

QOpenGLWidget 绘制对象

在QOpenGLWidget上使用Qt5小部件而不重写?