问题标签 [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 回答
199 浏览

c++ - 从上下文共享的 QOpenGLWidget 崩溃

我在顶级小部件中有两个QOpenGLWidgets( view1, ) 作为子级。view2Qt 文档说“当多个 QOpenGLWidgets 作为子级添加到同一个顶级小部件时,它们的上下文将相互共享”。所以,view1view2分享 OpenGL 上下文。我试图渲染在view1's context 中初始化的相同场景,并且应用程序在 view2's 中崩溃paintGL()。我做错了什么?

这是简化的代码:

0 投票
1 回答
40 浏览

python - Get openGLwidget linked with Qtimer update

I m trying to build a gui with Pyqt5. and withing the gui there is an openGLwidget, that should contain a rotating cube. But i cannot figure out how to make the cube rotate. Thank you. this is the setup function

and here is the paintGL and update functions:

0 投票
0 回答
36 浏览

qt - 带有两个 QOpenGLWidget 和 QPainter 小部件的 Qt 双窗口程序

我正在编写一个带有两个窗口的 Qt 程序,每个窗口都包含一个 QOpenGLWidget。在每个 QOpenGLWidget 中,我使用 QPainter 编写文本。该程序有效,但是当它退出时,我得到一个分段错误(核心转储)。当我只在第一个窗口中写入文本时,不会出现此问题。知道有什么问题吗?提前致谢。

0 投票
2 回答
210 浏览

opengl - QOpenGLWidget,QOpenGLWindow的问题

谁能告诉我为什么我的paintGL中的以下代码在使用DrawArrays函数时不绘制?我在最后一个 Windows 10 上的 Qt Creator 中使用 Qt 5.14.2。

一些评论;

我正在尝试使用以下声明来了解 Qt 中 OpenGL 实现之间的差异。随着时间的推移,我将使用我最喜欢的实现来编写我的应用程序。

  1. 类 OpenGLWindow:公共 QWindow,公共 QOpenGLFunctions

当我将以下代码放在 render() 函数中时,这工作正常,完全没有问题,非常好!!

  1. 类 myOpenGLWidget:公共 QOpenGLWidget,公共 QOpenGLFunctions

我将代码放在paintGL 函数中。我可以为背景着色,但 glDrawArrays() 什么也不做。但是,我可以画一个三角形,glBegin 和 glEnd 语句之间的代码是成功的。我没有收到任何错误。我测试 m_program->bind() 调用的结果,结果返回 true。

  1. 类 myQOpenGLWindow:公共 QOpenGLWindow,受保护的 QOpenGLFunctions

与 #2 相同,只是我将代码放在 render() 函数中。我可以为背景着色,但 glDrawArrays() 什么也不做。但是,我可以画一个三角形,glBegin 和 glEnd 语句之间的代码是成功的。我测试 m_program->bind() 调用的结果,结果返回 true。

如果有人需要问,我是在阅读了几十个不同的教程之后这样做的,这是我能找到的最好的信息。

谢谢你!!

{ // 绘制场景:

}

0 投票
0 回答
80 浏览

c++ - Qt OpenGLWidget 没有完全释放内存

我想将 OpenGLWidget 添加到布局中,当我的工作完成后,我想清理有关 OpenGLWidget 的所有内容,但是当我打开小部件并使用Qt::WA_DeleteOnClose属性关闭时,内存并没有完全释放。这是正常的还是我不知道正确的用法。我阅读了文档(https://doc.qt.io/qt-5/qopenglwidget.html)并尝试了所有方法,但是在创建小部件并在它们之后关闭时,我无法从内存中删除 40 mb 分配。关闭和删除操作后只需删除 3-4 mb。我将把它用于另一个项目。(我必须打开 OpenGLWidget,显示一些三角形并关闭 Widget。

我尝试使用 makeCurrent() 和 doneCurrent()、deleteLater() 以及更多操作,但它不起作用。

0 投票
2 回答
68 浏览

c++ - 使用坐标数组在 QOpenGLWidget 中绘制 GL_LINE

我已经使用 QtCreator 完成了工作应用程序。我的渲染类是

现在我想使用具有顶点坐标的数组来绘制对象。
我在此页面上找到了一些绘制三角形的教程: OpenGL Window Example

我试图重用它来绘制简单的线条

还有我的初始化方法

和画法

和调整大小方法

但是当我运行应用程序时,没有绘制任何内容。没有错误,没有例外,什么都没有。在本教程中,我看到

并且可能解决方案隐藏在这里,但我完全不明白它是什么以及这里发生了什么。我什至不确定这是否是绘制简单线条所必需的。
我应该怎么做才能使用坐标数组看到直线?

0 投票
1 回答
66 浏览

qt - 使用 QPainter 时对象是透明的

所以我试着在我的物品上贴上标签。我尝试了一个测试示例,只在其中放置一个简单的标签。然而,当我运行程序时,所有对象都有些透明。

油漆GL:

我不知道为什么,但它是唯一透明的物体。此外,QPainter 的添加也弄乱了茶壶的盖子。也许它与正在发生的 glPolygonMode 混乱的事情有关?

万一是 QPainter 偷偷地禁用GL_DEPTH_TEST了,这似乎是这种情况,我后来重新启用了它,但它仍然没有工作。

mainWidget是一个QOpenGLWidget

那么,问题是什么?图片:

在此处输入图像描述

(如您所见,网格线通过茶壶显示,但立方体没有,使其不完全透明。)

编辑:我发现所有其他对象也是透明的。

0 投票
0 回答
35 浏览

qt - QPainter 和 OpenGL 透明度问题

我一直在努力解决这个问题。

我有一个QOpenGLWidget对象,用于使用着色器(3.30 核心配置文件)在 OpenGL 上下文中渲染纹理(图像)和点云(GL_POINTS)。

一切正常,但是当我尝试使用QPainter渲染一些文本时,点云的透明度消失了。只需将其添加到 QOpenGLWidget 的paintGL()函数即可发生这种情况:

QPainter painter(this);

这些点变为实心(不透明),否则不会发生。当然,我可以摆脱 QPainter 并使用更多的着色器来渲染文本,但我只是感到困惑,因为我不希望会发生这种情况。我可能在 OpenGL 设置中遗漏了一些东西,但我无法理解它。

这就是我配置 OpenGL 上下文的方式:

虽然,我认为这个问题与 OpenGL 配置无关。任何帮助将不胜感激,谢谢!

0 投票
0 回答
43 浏览

opengl - 不能在 Qt 的paintGL 中使用多纹理?

我正在处理我的 ssr 演示,因此我需要将一些渲染数据存储到纹理中以进行后期处理。但是当我使用这些纹理时,似乎在paintGL 中只能激活一个纹理单元:

之后我可以确保渲染数据是正确的。但我无法在我的着色器中正确使用它,我测试了 gNormal、gColor、gPosition。但它们都显示与 gPosition 相同的图片。有人能帮我吗?

油漆GL:

初始化GL:

初始化帧缓冲区:

0 投票
0 回答
26 浏览

linux - 为什么我在 QOpenGLWidget 中播放媒体时图像总是蓝色

我在 QT ubuntu 20.04 中构建了一个媒体播放器。媒体还可以,但使用我的播放器,总是蓝色的。像这样:

在此处输入图像描述

播放帧代码是