问题标签 [qopenglwidget]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
354 浏览

qt - OpenGLWidget 上的 Qt 按钮组

我正在使用 Qt Creator 设计用户界面。我有一个覆盖所有表单的openGLwidget,我想在小部件上放置一些与底部对齐的按钮和某种通知框架。有没有默认的方法来做到这一点?

当我尝试在创建者上进行设计时,我无法摆脱布局限制并且不允许我将小部件放置在 openglwidget 上。

0 投票
0 回答
164 浏览

qt - QTabWidget 中的 QOpenGLWidget 减慢 MouseMoveEvent

对于一种 CAD 应用程序,我首先创建了一个 QWidget(用作 2D 编辑器),并在 QTabWidget 的选项卡中启用了鼠标跟踪。正如预期的那样,绘制和移动线条超级快。

接下来,我创建一个带有 QOpenGLWidget 的新选项卡(用作 3D 视图)。没有鼠标跟踪,但是当按下按钮时它对 mouseMoveEvent() 的反应非常快。正如预期的那样。

现在,当我将选项卡切换回 QWidget 时,mouseMoveEvents 变得非常慢。为什么?切换回 GL 表明 QOpenGLWidget 仍然反应迅速。

我将 QDebug 输出插入到 paintGL() - 它没有被调用。接下来我取消了initializeGL()、resizeGL() 和paintGL() 中所有代码的注释,因此根本没有GL 代码。还是同样的问题!

Qt 版本是 5.5.1,在 Ubuntu 14.04.5 LTS 上运行。

0 投票
0 回答
112 浏览

qt - 具有共享上下文的 QOpenGLWidget 子类

我有一QOpenGLWidget堂课:

在里面initializeGL()我有初始化着色器和缓冲区的调用,等等:

我的问题是:

随着这个类变得越来越复杂,有更多的着色器和缓冲区,我需要将所有内容组织成更好的形式。实现某种着色器/缓冲区管理器类的最佳方法是什么,以便功能与现在相同,但在不同的文件中。问题在于使用 opengl 函数和共享上下文。

在里面::initializeGL()我想有类似的东西:

在着色器管理器内部是这样的:

...等等,opengl 函数的工作方式与父类中的完全一样。

0 投票
0 回答
43 浏览

qt - Qt小哥窗口刷新导致效率问题

我有一个父窗口,它有一个QStackedLayout布局,使用QStackedLayout::All模式,QOpenGlWidget底部有一个来渲染视频。

顶层是QWidget C重写鼠标事件的自定义。

当鼠标移动时,会更新更新界面,指定更新区域吗?

比如update(QRect(0,0,20,30)),但是当底层QOpenGlWidget调用update()(没有指定刷新区域,默认是整个Widget)刷新接口时,我从C的paintEvent中得到的Rect是不是QRect(0,0,20,30),而是C的整个宽高,有什么办法解决吗?

这是父Widget 这是一个Contanier,它有一个customWidget 这是Container,上图中的pWidget,红色部分是customWidget C 这是customWidget C,覆盖鼠标事件 customWidget C,覆盖paintEvent来绘制图形

0 投票
1 回答
947 浏览

c++ - Qmatrix4x4 翻译不生效

我在opengl方面没有太多经验,所以如果问题很愚蠢,请原谅。

我试图通过在我的类 glView 中翻译 Qmatrix4x4 字段来使用 mouseMoveEvent 移动三角形。当我什么都没做(透视,用矩阵翻译)并且只是调用m_program->setUniformValue(m_matrixUniform, m_matrix)一切正常时,但如果我只是这样做this->m_matrix=matrix;(矩阵只是 Qmatrix4x4 变量)然后m_program->setUniformValue(m_matrixUniform, m_matrix)方法不起作用。

在我看来,我在更新小部件(我只是调用 update())或所有着色器逻辑方面都有一些问题。谢谢!

和cpp

0 投票
1 回答
313 浏览

c++ - 新窗口中的 QOpenGLWidget

我有一个带有按钮的简单 UI,按下按钮后我应该打开一个新窗口,应该在其中绘制 OpenGL 的东西。我正在尝试使用 QOpenGLWidget 执行此操作,但从不调用 InitializeGL() 和 paintGL() 函数。

所以基本上我的 main 有一个应该启动一切的函数:

可视化_OpenGL.cpp

和标题:

我见过的例子都在主窗口上绘制所有内容,当我这样做时,确实调用了paintGL()和initializeGL(),但我需要为此设置一个单独的窗口,我猜我的问题是涉及到的东西,QOpenGLWidget *test_window = new QOpenGLWidget();但我不知道如何解决。我对此非常陌生,所以如果这是一个超级菜鸟问题,我很抱歉,但任何帮助将不胜感激。

0 投票
1 回答
951 浏览

performance - QOpenGLWindow 和 QOpenGLWidget 在性能上有什么区别?

我一直在研究QOpenGLWindowQOpenGLWidget这两个类。在 QOpenGLWindow 的文档中它指出:“与 QOpenGLWidget 不同,QOpenGLWindow 不依赖于小部件模块并提供更好的性能。” 在我当前的项目中,我制作了QMainWindow一个在 Dock Widget 上QDockWidget带有一个的。OpenGLWidget

对于这个项目,我将需要 GL 部分尽可能高效,所以我想知道是否值得尝试将其转换为QOpenGLWindow. 但是,我不知道性能差异是什么。如果它是微不足道的,那么我将保留我目前的格式,如果它有很大的不同,那么我会转换它。

有谁知道性能差异是什么?

0 投票
1 回答
253 浏览

qt5 - 取消停靠后 QOpenGLWidget 上的文本消失

我正在尝试集成 Qt5 和 OpenSceneGraph。我发现了这个最小的嵌入示例。

当我将示例中定义的小部件封装到 QDockWidget 中并向示例中添加一个简单的文本标签时,当我取消停靠容器窗口时,文本消失了。当我重新停靠窗口时,不再显示文本。

我已经在 OpenSceneGraph 论坛上问过这个问题,但没有成功。我的猜测是它与 GL 相关的方法和小部件的内部重新设置有关。

在我的示例中,只有构造函数和主函数是从原始函数中修改的。

这是我修改后的示例(main.cpp):

0 投票
0 回答
227 浏览

qt - QOpenGLWidget 画线有时不可见或加粗

我正在继承 QOpenGLWidget 以绘制十字准线跟随鼠标。但是在 QOpenGLWidget 中绘图有点奇怪。当我上下移动鼠标时,水平线可能会消失或在某个高度变粗。QWidget不会出现这个问题,为什么?

水平线看起来很粗
水平线在这里消失了

0 投票
1 回答
267 浏览

qt - 调用 glewInit() 时 Qt QOpenGLWidget 崩溃并出现错误:缺少 GL 版本

我使用 Qt 用 GLEW 创建一个 3D 程序。当我从运行时创建 Widget调用glewInit () 时遇到问题。我创建了一个基于QOpenGLWidget的继承类MyRender。然后,

通常,我通过 Qt Designer使用类MyRender并将QOpenGLWidget 提升MyRender。然后我将在程序启动后拥有MyRender对象。没有问题。

但是,当我在运行时创建MyRender时。例如;

调用glewInit()时程序会崩溃

我从这里找到了和我有同样问题的人

然而,在帖子中,人们使用 GLUT 或 SDL 来创建上下文。由于我只使用 GLEW,我怎么能以与QOpenglWidget相同的方式制作上下文

或者

或者

因为我一个都没用。我只使用 QOpenGLWidget 和 glew。我试过了

打电话之前

但是,问题仍然存在。

关于我的机器:我使用的是 Windows 10 64 位。Qt 5.11 GLEW 2.1.0

编辑:

我用

如果我使用 Qt Designer 将 openGLWidget 提升为MyRender上下文没问题;但是,如果我在运行时创建MyRender

上下文将为 null 并导致glewInit () 错误。