问题标签 [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.
c++ - 如何仅在用户输入上设置统一变量?
我有一个RenderWidget
继承自 的类QOpenGLWidget
,它具有以下两种方法,其中包括:
paintGL
每秒被调用 100 次,而setSmthEnabled
仅在用户切换 UI 中的复选框时才调用,这种情况偶尔会发生。uniformUserInput
uniform 不需要每帧都设置,所以我尝试只在用户输入槽中设置它,但它不起作用。制服保留了它的价值,这是在初始化时设置的。
我猜这是因为渲染是异步的,并且在管道繁忙时无法更新制服。这就是为什么我在glFinish()
设置插槽之前尝试调用,但它没有帮助。我找到的唯一解决方案是以以下方式重写类:uniformUserInput
setSmthEnabled
现实世界的代码包含更多的用户输入统一,因此我不想在每一帧都更新它们并为此保留冗余的成员变量。如何仅根据用户输入更新制服?
shader.setUniformValue
在上面的核心中只调用QOpenGLShaderProgram::setUniformValue
一个相关的QOpenGLShaderProgram
对象并返回。
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 的返回。
c++ - 如何在 QOpenGLTexture 中创建带 alpha 的纹理?
我正在尝试使用QImage
and生成纹理QOpenGLTexture
。我将QImage
颜色格式设置为RGBA8888
,并用 设置颜色setPixel
,但似乎无论我如何更改 alpha 值,它都保持为 255,并且图片的透明度永远不会改变。
这是我的代码:
有什么建议么?
opencv - ubuntu 下用于 C++ 编译的 OpenCV 2.4.13 失败
我正在尝试在 ubuntu 上为 C++ 安装 openCV。我正在使用这个文件 。但编译步骤失败。make的日志如下:
你能帮我解决这个编译问题吗?
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
qt - 在没有 PaintGL 调用的情况下渲染到 QOpenGLFramebufferObject
我想在不调用 PaintGL 的情况下调用渲染例程,原因是我正在尝试使用 Qt OpenGL 实现的现代例程来渲染多通道效果,因此伪代码应该类似于:
问题是,如果我从 PaintGL 函数中调用渲染层,一切都会变得疯狂,它会被绘制在我的整个应用程序上,而不是在我的 glwidget(继承自 QOpenGLWidget)上,另一方面,渲染层函数是可以的,因为只能从 PaintGL 内部调用它像预期的那样工作。
对此有任何提示吗?
先感谢您
c++ - QChart z 值在使用 openGL 加速时不受尊重?
我正在尝试做与 Qt5标注示例几乎完全相同的事情,但我发现如果您调用setUseOpenGL(true)
该系列,那么标注会出现在线条下方而不是上方。
无论zValue
设置什么都是如此,包括m_tooltip->setZValue(std::numeric_limits<qreal>::max());
有解决方法吗?
c++ - 如何更新仅在 C++ 级别创建的 QQuickItem
我有一个QQuickItem
如下所示的派生类
我也有自己的TextureNode
课。
我已经MyQQuickItem
在 QML 端注册并嵌入main.qml
如下。
在某个信号的触发上,我已经连接到一个插槽MyQQuickItem
,我调用this->update()
. 这当然会触发updatePaintNode
,我可以MyQQuickItem
用我想要的新内容重新绘制我的内容。
是否可以触发updatePaintNode
aQQuickItem
而无需在 qml 文件中声明它?
我想MyQQuickItem
在 C++ 级别动态创建我的,并且根本没有在main.qml
我如何做到这一点中定义或声明它?
核心问题:如何在 C++ 级别创建一个 QQuickItem,它可以通过调用 update 来更新新内容,以便触发 updatePaintNode?
更新:
我可以通过QQuickItem
以下方式创建一个。
但问题是updatePaintNode
我打电话时无法开火this->update
。我应该怎么做才能让我QQuickItem
自己更新?