问题标签 [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.
c++ - 从上下文共享的 QOpenGLWidget 崩溃
我在顶级小部件中有两个QOpenGLWidget
s( view1
, ) 作为子级。view2
Qt 文档说“当多个 QOpenGLWidgets 作为子级添加到同一个顶级小部件时,它们的上下文将相互共享”。所以,view1
并view2
分享 OpenGL 上下文。我试图渲染在view1
's context 中初始化的相同场景,并且应用程序在 view2's 中崩溃paintGL()
。我做错了什么?
这是简化的代码:
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:
qt - 带有两个 QOpenGLWidget 和 QPainter 小部件的 Qt 双窗口程序
我正在编写一个带有两个窗口的 Qt 程序,每个窗口都包含一个 QOpenGLWidget。在每个 QOpenGLWidget 中,我使用 QPainter 编写文本。该程序有效,但是当它退出时,我得到一个分段错误(核心转储)。当我只在第一个窗口中写入文本时,不会出现此问题。知道有什么问题吗?提前致谢。
opengl - QOpenGLWidget,QOpenGLWindow的问题
谁能告诉我为什么我的paintGL中的以下代码在使用DrawArrays函数时不绘制?我在最后一个 Windows 10 上的 Qt Creator 中使用 Qt 5.14.2。
一些评论;
我正在尝试使用以下声明来了解 Qt 中 OpenGL 实现之间的差异。随着时间的推移,我将使用我最喜欢的实现来编写我的应用程序。
- 类 OpenGLWindow:公共 QWindow,公共 QOpenGLFunctions
当我将以下代码放在 render() 函数中时,这工作正常,完全没有问题,非常好!!
- 类 myOpenGLWidget:公共 QOpenGLWidget,公共 QOpenGLFunctions
我将代码放在paintGL 函数中。我可以为背景着色,但 glDrawArrays() 什么也不做。但是,我可以画一个三角形,glBegin 和 glEnd 语句之间的代码是成功的。我没有收到任何错误。我测试 m_program->bind() 调用的结果,结果返回 true。
- 类 myQOpenGLWindow:公共 QOpenGLWindow,受保护的 QOpenGLFunctions
与 #2 相同,只是我将代码放在 render() 函数中。我可以为背景着色,但 glDrawArrays() 什么也不做。但是,我可以画一个三角形,glBegin 和 glEnd 语句之间的代码是成功的。我测试 m_program->bind() 调用的结果,结果返回 true。
如果有人需要问,我是在阅读了几十个不同的教程之后这样做的,这是我能找到的最好的信息。
谢谢你!!
{ // 绘制场景:
}
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() 以及更多操作,但它不起作用。
c++ - 使用坐标数组在 QOpenGLWidget 中绘制 GL_LINE
我已经使用 QtCreator 完成了工作应用程序。我的渲染类是
现在我想使用具有顶点坐标的数组来绘制对象。
我在此页面上找到了一些绘制三角形的教程:
OpenGL Window Example
我试图重用它来绘制简单的线条
还有我的初始化方法
和画法
和调整大小方法
但是当我运行应用程序时,没有绘制任何内容。没有错误,没有例外,什么都没有。在本教程中,我看到
并且可能解决方案隐藏在这里,但我完全不明白它是什么以及这里发生了什么。我什至不确定这是否是绘制简单线条所必需的。
我应该怎么做才能使用坐标数组看到直线?
qt - 使用 QPainter 时对象是透明的
所以我试着在我的物品上贴上标签。我尝试了一个测试示例,只在其中放置一个简单的标签。然而,当我运行程序时,所有对象都有些透明。
油漆GL:
我不知道为什么,但它是唯一透明的物体。此外,QPainter 的添加也弄乱了茶壶的盖子。也许它与正在发生的 glPolygonMode 混乱的事情有关?
万一是 QPainter 偷偷地禁用GL_DEPTH_TEST
了,这似乎是这种情况,我后来重新启用了它,但它仍然没有工作。
mainWidget
是一个QOpenGLWidget
。
那么,问题是什么?图片:
(如您所见,网格线通过茶壶显示,但立方体没有,使其不完全透明。)
编辑:我发现所有其他对象也是透明的。
qt - QPainter 和 OpenGL 透明度问题
我一直在努力解决这个问题。
我有一个QOpenGLWidget对象,用于使用着色器(3.30 核心配置文件)在 OpenGL 上下文中渲染纹理(图像)和点云(GL_POINTS)。
一切正常,但是当我尝试使用QPainter渲染一些文本时,点云的透明度消失了。只需将其添加到 QOpenGLWidget 的paintGL()函数即可发生这种情况:
QPainter painter(this);
这些点变为实心(不透明),否则不会发生。当然,我可以摆脱 QPainter 并使用更多的着色器来渲染文本,但我只是感到困惑,因为我不希望会发生这种情况。我可能在 OpenGL 设置中遗漏了一些东西,但我无法理解它。
这就是我配置 OpenGL 上下文的方式:
和
虽然,我认为这个问题与 OpenGL 配置无关。任何帮助将不胜感激,谢谢!
opengl - 不能在 Qt 的paintGL 中使用多纹理?
我正在处理我的 ssr 演示,因此我需要将一些渲染数据存储到纹理中以进行后期处理。但是当我使用这些纹理时,似乎在paintGL 中只能激活一个纹理单元:
之后我可以确保渲染数据是正确的。但我无法在我的着色器中正确使用它,我测试了 gNormal、gColor、gPosition。但它们都显示与 gPosition 相同的图片。有人能帮我吗?
油漆GL:
初始化GL:
初始化帧缓冲区:
linux - 为什么我在 QOpenGLWidget 中播放媒体时图像总是蓝色
我在 QT ubuntu 20.04 中构建了一个媒体播放器。媒体还可以,但使用我的播放器,总是蓝色的。像这样:
播放帧代码是