问题标签 [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.

0 投票
1 回答
2862 浏览

c++ - 使用 glClearColor 初始化 QGLWidget

我有QMainWindow一个QGLWidget在里面。我希望小部件显示我自己选择的“清晰”颜色,而不是默认的黑屏。

这行得通,我注意到该方法在启动过程中被调用了 4 次。但是,我只想在方法中将其绘制为空白一次paintGL(),因为此方法在启动后经常被调用,如果在每次调用时都清除缓冲区,实际上会有很小但显着的性能损失。

所以我把代码改成这样:

现在清除只完成一次,但我留下的是黑屏,而不是灰屏glClearColor。为什么是这样?为什么 QGLWidget 再次将我的屏幕涂黑?更重要的是,如何确保屏幕是我自己的默认颜色,而不是在每个时间步骤都将其重新绘制为空白?

0 投票
1 回答
1646 浏览

android - 如何在两个轴上旋转 QQuaternion

我正在使用 qglwidget 和 Android 应用程序的各种手势,四元数的主题完全令人困惑,所以它主要是猜测和检查。我已经能够使用以下方法围绕一个轴旋转一定度数:

这与 x 方向上的相同语句具有所需的结果。

我的问题是,其中一个是正确的轮换方式吗?第二,如果我想在两个轴上旋转,我只是这样做:

或者是否有一个同样有效的单行语句?

0 投票
1 回答
9633 浏览

qt - QGLWidget 的paintGL 什么时候调用?

我所能找到的只是“每当需要绘制小部件时”。

具体是什么时候?

0 投票
2 回答
965 浏览

qt - 如何使原始(0,0)坐标位于QGLWIdget的左上角?

我想使用 QGLWidget 显示图像,它没有以正确的方式显示,问题之一是原始坐标位于小部件的左下角。我想知道如何使原始坐标位于左上角并翻转 y 轴。

在此处输入图像描述

这是我的代码:

标题

cpp

0 投票
2 回答
2083 浏览

qt - 如何在 QGLWidget 中寻找 OpenGL 的等效功能?

我是 OpenGL 和 Glut 的新手。Glut 实施了一个项目。我google了一下,发现Qt中有一个OpenGL实现,叫做QGLWidget。但是,我很难将旧的 Glut 代码转换为新的 Qt 代码,因为我不知道如何在 Qt 中找到 Glut 函数的等效函数。部分代码如下所示:

Qt 的文档中不存在上述 glut* 函数。所以我的问题是如何在 QGLWidget 的函数中找到等效的 glut 函数?

0 投票
1 回答
1044 浏览

qt - 使用 Qt Creator 子类化 QGLWidget 错误

我正在尝试使用 Qt Creator 创建一个简单的子类QGLWidget,我使用 Qt Creator 向导生成了 .h 和 .cpp 文件,该向导生成了以下代码:

视口.cpp

视口.h

我添加QT += opengl到消除了大部分错误的 .pro 文件中,但留下了两个我不明白的地方:

我没有改变任何东西,只是试图编译 Qt 给我的东西,有什么想法吗?

0 投票
1 回答
419 浏览

qt - Qt 只是使用 QT 中的 QGLWidget 绘制第一帧

我使用 QGLWidget 编写了一个小型 QT 程序。目标是在永久旋转中显示一个简单的三角形。问题是没有动画,因为只渲染了第一帧。

这是我的主要 C++ 源代码:

我的 qtapplication.h 文件:

我的 qtapplication.cpp 文件:

我的 HSGLWidjet.h 文件:

还有我的 HSGLWidjet.cpp 文件:

字符串 'PAINTGL' 仅针对第一帧写入。通常,paintGL 会被自动调用。在这种情况面前,我真的很迷茫。有人可以帮助我吗?非常感谢您的帮助。

0 投票
0 回答
338 浏览

c++ - QT GraphicsScene 中 OpenGL 的正确初始化顺序是什么?

下面的 QT 示例很简单:我试图找出为什么只有在应用程序被 MessageBox 计时时才会显示纹理。我正在使用 QT4.8.1 并在 linux 和 VS2008 下都尝试过。

关于如何调试这个并弄清楚里面发生了什么的任何想法?

0 投票
1 回答
404 浏览

qt - 将 Qt 集成到预先编写的应用程序/框架中

我有一个用 c++ 编写的小型可视化框架,并希望使用 Qt 来拥有适当的 GUI 并控制我的可视化以与它们交互。目前,我正在使用 GLUT 创建一个窗口并在其中绘制一个视图。所以我所做的一切都是初始化可视化类的一个对象,它为我做所有事情:保存模型和视图。视图本身拥有一个控制器来处理用户输入和操作模型。我的主循环如下所示:

使用 GLUT,我有一个窗口,可以在其中安排多个视图。当我在主循环期间命令视图绘制时,我可以执行 glCommands 并且一切都很好。

所以现在我的问题是我想在几个窗口(QDialogs+ QGLWidgets)中使用 Qt。我熟悉 Qt,并且已经将框架移植到 Qt。但问题是我必须在框架内做太多的 Qt 集成,这不是我想要的。我想用 Qt 及其 GUI 元素控制可视化,但视图的绘制调用应该由我的 Visualization 类进行,如 GLUT 示例所示。因此,必须有一种方法可以提供一个继承QGLWidget的指向视图对象的指针,并且无论何时应该绘制视图,都必须调用小部件,makeCurrent()以便 glCommands 可以在上下文中绘制。我也可以使用我的视图绘制当前场景的纹理,然后在 paintGL 或glDraw()函数中绘制纹理QGLWidget,但是我如何告诉 Widgetupdate()当视图对此一无所知时。我将用QTimer设置为 0 来模拟主循环。我要做的就是能够QGLWidget在我的框架内触发渲染。有什么建议吗?链接?例子?

0 投票
1 回答
456 浏览

c++ - QGLWidget 最大尺寸

我有一个QGLWidget在 Mac OS 上使用 OpenGL 绘图的 Qt 应用程序。在我的 MBP 上它运行良好,但是在 30" 屏幕上尝试时,我注意到有一个窗口大小限制。
如果我将窗口大小增加到超过某个限制,则QGLWidget's 的内容会消失,只有一些灰色的内存垃圾可见.

我将代码更改为只QGLWidget在屏幕上放一个。在repaint event每次迭代中将背景设置为黑色。
问题仍然可见:当调整小部件的大小时,黑色表面消失并被内存垃圾取代,当小部件的大小达到一定大小时。

有趣的事实:

  • 当我减小窗口大小时,GL 表面又恢复了活力
  • 我有几个其他 GL 应用程序(不是 Qt)在最大化窗口中运行,所以问题不在于 OpenGL 驱动程序/视频卡
  • 似乎窗口的面积(nr 个像素)很重要,如果我把窗口做得很宽,它的高度就会受到限制,反之亦然,如果窗口的高度最大化,宽度必须很小