问题标签 [qtopengl]

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 回答
542 浏览

c++ - 如何组合同一物体手部扫描的多个点云

我正在做一个学校项目,我要做的一件事就是结合对同一物体的多次扫描。这些扫描或 .obj 文件,我想将它们组合起来以获得更好的扫描对象。

我在互联网上搜索解决方案,但我没有找到任何可接受的解决方案,所以如果有人只是有一个想法或跟踪,我将不胜感激。

如果您对我的问题有任何疑问,可以问我,也许我的英语不正确,我是法国人。

谢谢 !

0 投票
1 回答
489 浏览

qt - 当我使用 setUseOpenGL(true) 时,QChartSeries 的某些属性将被禁用

首先,我的 QT 环境是 5.12.0 和 MSVC 2017 64 位,我之前使用 5.10.0 和 MSVC 2017 64 位,但结果是一样的。

例如,在 QLineSeries 中,setPointsLabelVisible 和 setPointsVisible 将被禁用。在 QScatterSeries 中,setMarkerShape 将被禁用。就像我上传的图片一样。

图 1

在此处输入图像描述

在这张照片中我没有设置UseOpenGL(true)
pic 2

在此处输入图像描述

在这张图片中,我 setUseOpenGL(true) 和 markerShape 变成了块而不是带边缘的圆形。

我尝试在 setUseOpenGL(true) 之后设置这些属性,但它不起作用。

我想知道如何在使用 setUseOpenGL(true) 时启用这些属性。

0 投票
0 回答
193 浏览

c++ - 如何使用 glReadPixels 和 gluUnproject 生成正确的点坐标?

我正在使用 QGLWidget 和 QtOpenGL 来显示我的点云,并使用 glReadPixels 和 gluUnProject 从点云中选择一个点。问题是 glReadPixels 似乎没有选择我点的像素。

我尝试在 glReadPixels 中使用不同的点大小以及不同的块大小,但“射线”似乎穿过这些点。我想知道我是否需要计算光线的关闭点,因为它几乎不可能在该点上单击。

这些点是用(只是 origon 中的一个点的例子)绘制的

点拾取由下面的 getObejctCoords 函数完成。

在相机位置 (0,0,-50) 旋转:(0, 0) (通过单击几乎在原点处的点(但在点上),该函数产生以下输出

实际结果应该(据我所知)应该是 x: 0 y: -0.578724 z: -0

0 投票
1 回答
952 浏览

c++ - Qt QOpenGLWidget 在哪里?

我正在尝试编写一个使用 QOpenGLWidget 的 C++ 应用程序,但 Qt Creator 在这一行给出了“'QOpenGLWidget' file not found”错误:

文档说 QOpenGLWidget 是在 Qt 5.4 中引入的,我相信我正在运行 Qt 5.12.1;qmake --version给出:

而且,在Qt Creator 菜单Tools -> Options... -> Kits 中也表示Qt 5.12.1。Qt Creator 允许我使用#include <QOpenGLWindow>(也与 QOpenGLWidget 一起在 Qt 5.4 中引入)编译和链接 OpenGL 应用程序而不会出错。

我究竟做错了什么?QOpenGLWidget 在哪里?

0 投票
1 回答
102 浏览

c++ - Qtopengl,为什么不能使用不同的vbo绘制两个立方体

我在 QT 中使用 opengl,并想绘制一个彩色立方体和一个白色立方体(模拟光源)。我使用两个不同的着色器程序和两个不同的 vbo。但是,我发现我只能画一个立方体。该怎么办?

0 投票
2 回答
856 浏览

c++ - QOpenGLWidget 粉碎显示

QOpenGLWidget我在一个QMainWindow实例中嵌入了一个w。编译没问题。但是在调试时,程序在w.show().

错误对话框说:

在 TestQtOpenGL.exe 中的 0x000007FEE5AF4469 (d3d11sdklayers.dll) 处引发异常:0xC0000005:访问冲突读取位置 0x00000806E5B03A98。

调用栈是:


一个演示:


环境:

  • Qt 5.9.4 msvc2015 64bit
  • 视觉工作室 2015
  • Windows 7的

根据@Aleph0 的建议,我已经使用 [Visual Studio]->[Debug]->[Windows]->[Modules] 调查了加载的模块。但我没有发现任何可疑的 DLL。模块列表在此处上传。

0 投票
1 回答
235 浏览

c++ - 在 QOpenGLWidget 上的 update() 之前调用 glActiveTexture(GL_TEXTURE1) 会导致纹理显示为黑色

QOpenGLWidgetand继承时QOpenGLFunctions_4_5_Core,如果我glActiveTexture(GL_TEXTURE1)在调用纹理之前调用(或任何其他非零数字)update(),则屏幕上将显示完全黑色。

相关代码片段:

和主循环功能:

着色器仍然可以绘制到屏幕上;如果我在片段着色器中设置纯色,颜色将正确显示到屏幕上。似乎只有用户制作的纹理完全变黑了。

我没有收到任何 OpenGL 错误。

完整的 MRE 可以在以下位置找到:https ://github.com/Luminic/MRE_QOpenGLWidget_glActiveTexture_GL_TEXTURE1_before_update

有谁知道是什么导致了这种奇怪的行为?

0 投票
0 回答
419 浏览

opengl - 如何在 QT opengl 中将帧速率限制为 60fps

我曾经使用该函数来限制 GLFW 中的渲染帧速率。

现在我正在使用 Qt opengl 功能在 QT 中构建一个 Opengl 项目。

在主函数中,我设置了全局值。

这就是 Qt opengl 类头文件的样子。

在类的构造函数中

但是渲染循环仍然没有同步,Qdebug 值一直在 8 到 16 之间变化。

0 投票
1 回答
129 浏览

qt - 通过 QGraphicsScene 中的 addWidget 嵌入 QOpenGLWidget

前段时间我创建了一个子类QGraphicsView,我称之为MultiWidget. 它的目的是保存我使用的其他一些小部件,我使用 addWidget 添加到QGraphicsScene关联到我的MultiWidget.

这个想法是,MultiWidget应该呈现所有这些添加的小部件的“笔记本式”视图,从上到下显示它们,一个在另一个下,并给(作为一个额外的噱头)一个小绿色旋钮,用它可以切换小部件隐藏和显示之间:

在此处输入图像描述

现在我尝试添加一个新的小部件GPURenderWidget,从QOpenGLWidgetwithaddWidget方法派生MultiWidget,它首先看起来没有错误。但是: 显示的内容GPURenderWidget没有在 :paintGL的窗格上正确显示MultiWidget: 显示了初始图片,但是尽管在一系列paintGL调用中生成了新帧,但GPURenderWidgetMultiWidget 中的视图没有得到更新(以下是呈现的静止视图):

在此处输入图像描述

我已经将我viewport的设置MultiWidgetOpenGL-formvia

我是否被迫放弃这种方法?什么是最好的选择?我应该创建一个GPURenderItem派生的QGraphicsItem并将其添加到QGraphicsViewviaaddItem()吗?但我更愿意GPURenderWidget保留一个QOpenGLWidget,以便它可以在其他地方用作独立的小部件。还是我必须牺牲整个MultiWidget方法addWidget来 a QGraphicsScene

0 投票
0 回答
115 浏览

c++ - QT 非 GUI 线程上的 WGL 窗口

我开始尝试使用 QT 的 OpenGL 资源在非 GUI 线程上创建 OpenGL 渲染窗口,如该线程中所述:

https://forum.qt.io/topic/123151/qwindow-on-a-non-gui-thread

我尝试这样做的原因是因为我的 GUI 线程非常忙于处理大量事件和小部件,当我使用 QWindow 时这会导致卡顿和丢帧。

目前,我已经创建了一个用于创建QOpenGLContext的本机 WGL 上下文/窗口:这是该项目的 github 链接:https ://github.com/rtavakko/WinGL

所有资源,包括本机窗口,都可以毫无问题地创建,并且我能够在单独的线程上使 QT 上下文成为当前的,并且 OpenGL 渲染也不会产生错误,但 Hello Triangle 不会在我的窗口上渲染。似乎原生 WGL 上下文和 QT 上下文仍然是独立的实体。

如果我进行直接 WGL 调用以使上下文成为当前/交换缓冲区,我似乎能够在本机窗口上进行 OpenGL 调用,但似乎我仍然无法访问 QT 上下文呈现的资源(例如 FBO 输出纹理)。

有什么想法可能是错的吗?

干杯!