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

c++ - 如何仅在用户输入上设置统一变量?

我有一个RenderWidget继承自 的类QOpenGLWidget,它具有以下两种方法,其中包括:

paintGL每秒被调用 100 次,而setSmthEnabled仅在用户切换 UI 中的复选框时才调用,这种情况偶尔会发生。uniformUserInputuniform 不需要每帧都设置,所以我尝试只在用户输入槽中设置它,但它不起作用。制服保留了它的价值,这是在初始化时设置的。

我猜这是因为渲染是异步的,并且在管道繁忙时无法更新制服。这就是为什么我在glFinish()设置插槽之前尝试调用,但它没有帮助。我找到的唯一解决方案是以以下方式重写类:uniformUserInputsetSmthEnabled

现实世界的代码包含更多的用户输入统一,因此我不想在每一帧都更新它们并为此保留冗余的成员变量。如何仅根据用户输入更新制服?

shader.setUniformValue在上面的核心中只调用QOpenGLShaderProgram::setUniformValue一个相关的QOpenGLShaderProgram对象并返回。

0 投票
2 回答
966 浏览

opengl - 尽管 OpenGL 上下文有效,glGenTextures 仍给出 GL_INVALID_OPERATION

GL_INVALID_OPERATION打电话时出错,我glGenTextures不知道是什么原因造成的。

我正在使用 QtOpenGLWidget 来检索上下文,它在我调用时看起来是有效的glGenTextures()(至少我有一个,glGetString(GL_VERSION)并且glxGetCurrentContext()两者都返回了一些不是废话的东西)

QOpenGLWidget::resizeGL()从方法中调用错误代码。在QOpenGLWidget::initializeGL()我成功编译了一些着色器程序并创建/上传数据到 VAO/VBO 中。

所以我的问题是:

  • glGenTextures()除了根本没有 OpenGL 上下文之外,常见的错误情况是什么
  • OpenGL上下文是否无效或混乱,在这种情况下
  • 如何检查我的 OpenGL 上下文是否有效?

编辑:因为我坚信这与我的机器没有合适的 GPU 的事实有关,所以这里是 glxinfo 的返回

0 投票
1 回答
764 浏览

c++ - 如何在 QOpenGLTexture 中创建带 alpha 的纹理?

我正在尝试使用QImageand生成纹理QOpenGLTexture。我将QImage颜色格式设置为RGBA8888,并用 设置颜色setPixel,但似乎无论我如何更改 alpha 值,它都保持为 255,并且图片的透明度永远不会改变。

这是我的代码:

有什么建议么?

0 投票
1 回答
574 浏览

opencv - ubuntu 下用于 C++ 编译的 OpenCV 2.4.13 失败

我正在尝试在 ubuntu 上为 C++ 安装 openCV。我正在使用这个文件 。但编译步骤失败。make的日志如下:

你能帮我解决这个编译问题吗?

0 投票
2 回答
240 浏览

c++ - Qt 模块错误 - QtOpenGL 中的 LNK 1112

我正在尝试在 Microsoft Visual Studio 2010 中构建与 Qt 库连接的项目 (x64)。我要编译的项目是使用 Visual Studio 2008 构建的。

我添加了所有依赖项,下载了编译的 64 位 Qt 库,并在 VS 2010 中对项目属性进行了所有适当的更改。虽然,我收到以下错误:

我检查了我的 .dll 和 .lib 文件,它们是 x64 位版本。此外,我的 QtOpenGL4.dll 文件位于错误中提到的路径的另一路径中。

会不会是 QtOpenGL4 模块的错误?我怎么能解决这个问题?请你帮助我好吗?

我为构建 64 位版本的 Qt 所遵循的说明在此链接中:https ://en.wikibooks.org/wiki/Opticks_Developer_Guide/Getting_Started/Building_Qt_From_Source

0 投票
1 回答
459 浏览

qt - 在没有 PaintGL 调用的情况下渲染到 QOpenGLFramebufferObject

我想在不调用 PaintGL 的情况下调用渲染例程,原因是我正在尝试使用 Qt OpenGL 实现的现代例程来渲染多通道效果,因此伪代码应该类似于:

问题是,如果我从 PaintGL 函数中调用渲染层,一切都会变得疯狂,它会被绘制在我的整个应用程序上,而不是在我的 glwidget(继承自 QOpenGLWidget)上,另一方面,渲染层函数是可以的,因为只能从 PaintGL 内部调用它像预期的那样工作。

对此有任何提示吗?

先感谢您

0 投票
1 回答
492 浏览

c++ - QChart z 值在使用 openGL 加速时不受尊重?

我正在尝试做与 Qt5标注示例几乎完全相同的事情,但我发现如果您调用setUseOpenGL(true)该系列,那么标注会出现线条下方而不是上方。

无论zValue设置什么都是如此,包括m_tooltip->setZValue(std::numeric_limits<qreal>::max());

有解决方法吗?

在此处输入图像描述

0 投票
0 回答
597 浏览

c++ - 如何更新仅在 C++ 级别创建的 QQuickItem

我有一个QQuickItem如下所示的派生类

我也有自己的TextureNode课。

我已经MyQQuickItem在 QML 端注册并嵌入main.qml如下。

在某个信号的触发上,我已经连接到一个插槽MyQQuickItem,我调用this->update(). 这当然会触发updatePaintNode,我可以MyQQuickItem用我想要的新内容重新绘制我的内容。

是否可以触发updatePaintNodeaQQuickItem而无需在 qml 文件中声明它?

MyQQuickItem在 C++ 级别动态创建我的,并且根本没有在main.qml我如何做到这一点中定义或声明它?

核心问题如何在 C++ 级别创建一个 QQuickItem,它可以通过调用 update 来更新新内容,以便触发 updatePaintNode?

更新: 我可以通过QQuickItem以下方式创建一个。

但问题是updatePaintNode我打电话时无法开火this->update我应该怎么做才能让我QQuickItem自己更新?

0 投票
1 回答
318 浏览

c++ - 如何让 qt 设计器自定义 QOpenGLWidget 小部件背景透明?

我创建了一个继承自 QOpenGLWidget 的自定义 qt 设计器小部件。一切都很好,除了我无法让小部件背景透明。

有没有办法解决这个问题?

在此处输入图像描述

0 投票
1 回答
973 浏览

opengl - OpenGL深度缓冲区不使用z值

我有一个运行 OpenGL 3.3 并尝试进行实例渲染的 QtOpenglWidget,但我的 z 缓冲区不起作用

目前,我按照 cube3、cube2、cube1 的绘制顺序添加了 3 个测试立方体,并更改它显示它只是显示最后绘制的立方体。我也知道DEPTH_TEST已启用,因为弄乱glDepthFunc不会显示任何内容。

在此处输入图像描述

我的初始化:

我的抽奖:

顶点:

碎片:

编辑 我发现这可能是一个 QtWidget 问题,被调用的第一件事main