问题标签 [qglwidget]
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.
qt - Qt GLWidget + 树 = 崩溃
我是一个 Qt 新手,我正在尝试使用 QGLWidget 和其他一些 UI 控件创建一个 Qt 应用程序。它在启动后短时间内崩溃。
以下是重现问题的步骤。
Mac 上的 Qt 5.0.1。
- 打开 QTCreator。基于 QMainWindow 类创建新项目。
将 opengl 添加到 .pro 文件:
/li>创建从 QGLWidget 继承的简单 GLWidget 类(它什么都不做)
/li>在 Designer 中做一些事情:
- 在主窗口上放置三个垂直布局。
- 将它们组织在垂直拆分器中。
- 将 CentralWidget 布局设置为水平。
将 GLWidget 添加到窗口的 mainwindow.cpp 代码中的 MainWindow 构造函数中:
/li>
跑。好的!
将 QTreeView 小部件拖放到设计器的左侧布局中。
再次运行...崩溃!
/li>
这是 QWidget::mapTo 函数中的断言:
我该如何解决这个问题?
qt - 如何在 Qt 表单类中调整 OpenGL 小部件的大小
我在 Qt 表单类 ( ) 中myWidget
的QVBoxLayout
( ) 中有一个 OpenGL 小部件 ( )。verticalLayout_2
MyForm
我想在调整表单大小时调整 OpenGL 小部件的大小。
我应该在 changeEvent 方法中写什么,以QVBoxLayout
将 OpenGL 小部件的大小调整为新大小?
qt - 将 OpenCV IplImage 渲染到 QGLWidget
我在渲染 OpenGL 场景时遇到问题。
背景是我想在预览窗口中显示来自视频捕获设备的帧。我正在使用 OpenCV 和 Qt。为了测试我从我的 MacBook 网络摄像头捕获。预览窗口为 200x200,捕获的帧为 640x480。我不担心保持纵横比。
来自 IplImage 结构的其他信息:
- 调试:通道:3
- 调试:深度:8
- 调试:dataOrder:0
- 调试:对齐:4。对齐图像行 4 或 8
- 调试:原点:0。0=左上角,1=左下角
- 调试:宽度步长:2560。
- 调试:colorModel:RGB
所以这张图片显示了当前的状况。
当前捕获 http://clinsoftsolutions.com/fgvc4.png
我从使用 glDrawPixels 开始,但效果不佳。我得到了输出,但没有缩放。
目前我正在尝试使用纹理,这是我用于 GL 交互的代码
图像是在定时器槽中捕获的,m_image 是一个 _IplImage 指针
我真的希望有人以前见过这种扭曲的图像并知道问题所在。
webgl - Qt5、Webgl 和 QGLWidget
我有一个巨大的应用程序在 c++ QGLWidget 中渲染 3d 场景。是否可以使用 Qt5 和 webgl 向应用程序添加脚本层,以便在 QGLWidget 上交互式“绘制”?如何?
c++ - 如何使用 Qt 的 QGLWidget 准确更新 OpenGL 中的对象位置?
我正在尝试在 QGLWidget 中移动用 OpenGL 绘制的立方体。以下是部分代码:
我已经实现了一个计时器,它通过信号和插槽连接定期调用 animate() 。每次执行 animate() 时不应该在 z 坐标上添加 -0.1 并因此在 z 方向上移动立方体吗?根据我选择的值,立方体要么不动(对于值大约 <-0.3),要么我根本看不到它(值大约 >0.4)。首先,我认为它要么移动得非常快然后消失,要么移动得非常慢,因此我看不到任何变化。但是玩弄 z 值总是以上述情况之一结束……这不是很奇怪吗?我究竟做错了什么?
qt - 具有 2 种渲染模式的 QGLWidget
我在 Qt 中有一个 OpenGL 小部件(从 QGLWidget 继承),具有 2 种渲染模式:
- 渲染默认立方体 (
#define CUBE_MODE 0
)。 - 渲染 opencv 图像 (
#define IMAGE_MODE 1
)。
我有一个公共方法来设置要呈现的模式(void setRenderMode(int mode)
)。
我还有一个组合框,其中包含 2 个项目:立方体和图像。
我希望当我单击组合框中的一个项目(例如多维数据集)时,openGL 小部件显示多维数据集,当我单击另一个项目(图像)时,小部件显示图像。所以我使用插槽/信号系统来做到这一点。
窗口正确启动,并显示多维数据集,但是当我切换到图像时,小部件不显示图像,当我尝试返回多维数据集项目时,它不显示。(当我在没有组合框的情况下单独使用它们时,这两种模式可以正常工作)。
这是我的代码片段:
paintGL 方法是:
更新
渲染图像代码:
和 setFrame 方法:
更新#2
我将paintGL修改为:
当我设置 openglWidget -> setRenderMode(0); 我只能看到立方体,但是当我单击组合框上的图像项时,我什么也看不到,反之亦然,当我设置 openglWidget -> setRenderMode(1)。
更新#3:完整的源代码
GLWidget.h
GLWidget.cpp
rk_geometry.h
主窗口.h
主窗口.cpp
ui_mainwindow.h
主文件
和CMakeLists
c++ - 选择模式下的 OpenGL 拾取
我知道 OpenGL 选择模式已被弃用,并且从未被硬件加速,除了在一些 SGI 框和 3DLabs GPU 上。但我无法摆脱它(不是我的代码)。在它的 C++ 代码下面:
这是 processHits 方法
Selection() 通过使用 *event 调用(GLWidget 派生自 QGLWidget (QT 4.8))。所以,只有当我单击鼠标右键时,我才会在缓冲区中“绘制”对象并将它们的名称压入堆栈。
而paintGL() 方法是
此时,使用此代码,我可以选择一个对象并检索其 ID,如果在相同的 xy 坐标上有更多对象,我可以检索最近的一个(按 ID)。所以,现在我有 3 个具有 3 个不同 ID(1-2-3)的对象。
ID=3 的大小不固定。我的问题是:如何使用缓冲区检索第三个圆环并更改其大小以修改 RADIUS1、RADIUS2、complex1、complex2?
你们有人可以写一个小例子吗?
我有没有,当有一个命中时,只需使用堆栈上命中的名称(用 glPushName 给出),它必须以某种方式引用一个对象(可能是一个包含名称的字符串公共成员),所以我可以改变它的属性?
c++ - Qt 应用程序滞后且 xorg 使用大量 CPU
我的 Qt 应用程序遇到了一些问题,这些问题非常缓慢且滞后。最初它是在我现在使用的另一台机器上开发的,它似乎在那里工作得很好。现在,我可以看到当我启动应用程序时 xorg 进程的 CPU 负载非常高(>25%),尽管它几乎没有做任何事情。
我正在使用两个 QGLWidgets 以 25fps 的帧速率绘制 2D 图形。我这样做的方法是重载paintEvent() 函数。我读过在某些情况下,此函数会产生无限循环,例如在函数内创建新对象时。我已经尝试将代码减少到最低限度,但问题仍然存在:
它没有画任何东西(因为我注释掉了 aerpainter->paint()),但 xorg 仍然处于 25% 的 CPU 负载并且 GUI 很慢。
定时器的超时信号(周期为 25Hz)连接到以下插槽,该插槽应触发paintEvent,就像在 Qt 示例之一中所做的那样:
以下是可能与问题有关的其他一些观察结果:
有很多 kworker 和迁移进程也使用了相当多的 CPU(总结起来大约是 10%-30%)。
我已经在原始机器上测试了该应用程序,它工作正常,但我注意到不是 xorg 而是 compiz 具有高 CPU 负载(大约 80%),即使它没有绘制任何东西......
更新:我刚刚意识到,当我增加 fps 时,其他 Qt 应用程序(如 2dpainting 演示)也会滞后,即使我注释掉了绘画代码(如上所示)。所以他们的整个问题可能与我的系统有关......?
qt - QGLWidget bindTexture for dynamic text consuming more memory
I have a situation where in, I need to print dymanic text(updated every 20 ms) on openGL window. I am using QGLWidget, where paintGL method is implemented using native openGL commands. I tried using renderText, but found problem with positioning texts. so I decided to go by render bitmap text approach. For every text to draw I would create an QImage and render this image. Everything works as expected text rendered at the right position in right size. So far so good. But(a big one :P), if i look in to my application memory expansion it grows and grows even when there are no updates to be drawn. I am quite skeptical on bindTexture interface using at dynamic situation. Does compiling image textures could casuse this? Anybody help me understand this issue. And with some possible solutions :)
opengl - 如何在 QGraphicsScene 中使用复杂的 OpenGL 作为背景?
我正在尝试使用复杂的 OpenGL 图像和图像上的一些旋转框创建显示。使用http://doc.qt.digia.com/qq/qq26-openglcanvas.html我可以有一个两层对象(继承自 QGraphicsScene),背景是简单的 OpenGL 图像,前景是控件。
所以,现在我正试图将我真正的 OpenGL 图像显示为背景。此图像由以下人员创建:
- 映射在结构上的四边形,
- 一些小的 2D 对象,由具有 alpha 通道和特定着色器的 2D 纹理表示,绘制在四边形上(上 z 值)
- 一些折线。
有了这张图片,我有一些奇怪的行为。2D 纹理对象以白色背景绘制。一些实验似乎表明,在绘制这个复杂的 OpenGL 图像时,alpha 通道被禁用。
我为用作 QGraphicsView 视口的 QGLWidget 尝试了不同的配置,但没有结果。
所以我需要帮助才能创建具有正确透明度效果的 OpenGL 图像。