问题标签 [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.
qt - QT 安装 - OpenGL(无角度)
我已经安装了 QT 的最后一个版本,但似乎这个版本包含一些 DirectX 调用,所以我希望默认安装程序使用 ANGLE !
我想安装一个 100% 的 openGL 版本,但我找不到!
任何想法 ?
谢谢
c++ - glTexSubImage3D vs QOpenGLTexture setData
据我了解,在纹理数组或 3D 纹理的情况下,QOpenGLTexture::setData 等效于 glTexImage3D。现在如果我想在运行时使用 PBO 来更新纹理,我需要使用 glTexSubImage3D 而不是 glTexImage3D,那么 Qt 纹理中的等价物是什么?
qt - 从 QOpenGLFramebuffer 创建 Cubemap
我想使用 Qt 小部件为 IBL 实现立方体贴图卷积。
在实现从 equirectangular 贴图到立方体贴图的转换时,我遇到了一个我不明白的错误:
这是我创建渲染缓冲区的方法:
这是我创建立方体贴图纹理的方法:
然后我继续将不同的立方体贴图视图渲染到纹理的相应部分:
该drawBackground()
方法绘制了一个环境球体,它适用于我的默认缓冲区。
我得到的 openGL 错误是 1282。如果我注释掉该glFramebufferTexture2D
行,它将变为 0。1282 对应于GL_INVALID_OPERATION
or GL_INVALID_VALUE
,根据glFramebufferTexture2D
文档,这两个都附加了多个错误。
我做错了什么?我尝试迭代每个参数以解决此错误,但没有提出解决方案。因为这应该是相当标准的东西,我希望在这里找到解决方案:D 帮助?
opengl - Opengl 渲染四边形
出于某种原因,我正在渲染的四边形没有显示,它只渲染黑屏。我已经检查了多次代码,但找不到问题,也许有人可以看到我看不到的东西!
目的是让一个四边形跟随相机,现在我只想用单一颜色显示四边形,但我得到的只是一个黑屏。我正在使用QOpenGLWindow
和QOpenGLFunctions
。
和渲染:
我将投影矩阵设置为:
这是我的相机参数:
这是我的顶点着色器:
和我的片段着色器:
opengl - 从 QCoreApplication::processEvents 调用 QWidget::paintEngine
我正在使用 QOpenGLWidget 将 OSX 应用程序从 Qt 4/Carbon 转换为 Qt5.11。
我已经将绘图“调用”移动到我重写的 QOpenGlWidget::paintGL()。
问题是我仍然在控制台上收到这些消息:
QWidget::paintEngine: 不应再调用
获取堆栈跟踪后,我发现它最终是从 QCoreApplication::processEvents 调用的,我是从我自己的内部事件循环中调用的。
这是一个堆栈跟踪(为便于阅读而编辑)
- 线程 #1,队列 = 'com.apple.main-thread',停止原因 = 断点 1.1
- 帧#0:libQt5Widgets_debug.5.dylib
QWidget::paintEngine() frame #1: libQt5Widgets_debug.5.dylib
QOpenGLWidget::paintEngine(0) 帧#2:libQt5Gui_debug.5.dylibQPainter::begin() frame #3: libQt5Gui_debug.5.dylib
QPainter::QPainter() 帧#4:libQt5Gui_debug.5.dylibQPainter::QPainter() frame #5: libQt5Widgets_debug.5.dylib
QWidgetPrivate::drawWidget() 帧#6: libQt5Widgets_debug.5.dylibQWidgetPrivate::repaint_sys() frame #7: libQt5Widgets_debug.5.dylib
QWidgetPrivate::syncBackingStore() 帧#8:libQt5Widgets_debug.5.dylibQWidgetWindow::handleExposeEvent() frame #9: libQt5Widgets_debug.5.dylib
QWidgetWindow::event() 帧#10:libQt5Widgets_debug.5.dylibQApplicationPrivate::notify_helper() frame #11: libQt5Widgets_debug.5.dylib
QApplication::notify() 帧#12:libQt5Core_debug.5.dylibQCoreApplication::notifyInternal2() frame #13: libQt5Gui_debug.5.dylib
QCoreApplication::sendSpontaneousEvent() 帧#14:libQt5Gui_debug.5.dylibQGuiApplicationPrivate::processExposeEvent() frame #15: libQt5Gui_debug.5.dylib
QGuiApplicationPrivate::processWindowSystemEvent() 帧#16:libQt5Gui_debug.5.dylibbool QWindowSystemInterfacePrivate::handleWindowSystemEvent<QWindowSystemInterface::SynchronousDelivery>() frame #17: libQt5Gui_debug.5.dylib
void QWindowSystemInterface::handleExposeEvent() 帧#18:libqcocoa_debug.dylibQCocoaWindow::handleExposeEvent() frame #19: libqcocoa_debug.dylib
::-[QNSView updateRegion:](self=0x000061200039fc40, _cmd="updateRegion:", dirtyRegion=QRegion @ 0x00007ffeefbf9b18) 帧 #20: libqcocoa_debug.dylib::-[QNSView updateLayer](self=0x000061200039fc40, _cmd="updateLayer") frame #21: AppKit
_NSViewUpdateLayer + 45 帧 #22: AppKit-[_NSViewBackingLayer display] + 495 frame #23: QuartzCore
CA::Layer::display_if_needed(CA ::Transaction*) + 634 frame #24: QuartzCoreCA::Context::commit_transaction(CA::Transaction*) + 319 frame #25: QuartzCore
CA::Transaction::commit() + 576 frame #26: QuartzCoreCA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 66 frame #27: CoreFoundation
CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 23 frame #28: CoreFoundation__CFRunLoopDoObservers + 452 frame #29: CoreFoundation
CFRunLoopRunSpecific + 523 frame #30: HIToolboxRunCurrentEventLoopInMode + 293 frame #31: HIToolbox
ReceiveNextEventCommon + 618 frame #32 : HIToolbox_BlockUntilNextEventMatchingListInModeWithFilter + 64 frame #33: AppKit
_DPSNextEvent + 997 帧 #34: AppKit-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1362 frame #35: libqcocoa_debug.dylib
QCocoaEventDispatcher::processEvents(this=0x00006040000dbdf0, flags=(i = 0)) at qcocoaeventdispatcher.mm:482 frame #36: libQt5Core_debug.5.dylib`QCoreApplication::processEvents(flags=(i = 0)) at qcoreapplication.cpp :1252
- 帧#0:libQt5Widgets_debug.5.dylib
问题是 ::processEvents 最终为 QOpenGLWidget 调用 ::paintEngine,在 ::paintGL 之外,但它完全不受我的控制。
FWIW,驱动它的事件是 QEvent::UpdateRequest。
我尝试在我的 QOpenGLWidget 继承类中重写 ::event 以在收到 QEvent::UpdateRequest 时调用 QOpenGlWidget::update,但这最终导致应用程序无响应。
我应该如何处理 ::processEvents 尝试绘制 QOpenGlWidgets?
谢谢!
c++ - Matlab与QT图形集成
我编写了一个打开 qt 小部件的 c++ 文件,并用 mex 包装它,以便我可以从 Matlab 调用它。是否可以使用图形打开小部件?例如在子图轴中?
c++ - glDrawElements 在 Linux 下工作,但在 Windows 下不工作
我只是想渲染一个四边形。我将 QtOpengWindows 用于我的渲染类,这里是渲染四边形的代码:
它在 Linux 下运行良好,但是当我尝试在 Windows 下运行它时,这部分代码不会呈现任何内容。这是我的顶点着色器:
qt - 如何实时可视化来自不同线程的图像?
我有 4 个相机对象。每个相机对象独立刷新帧。我想在我的视频墙类上可视化这些帧。基本上,我的拼接墙只是一个带有 draw Widget 方法的 gridlayout 子项。
每个相机对象都有 imageHolder 小部件。ImageHolder 小部件是 qOpenglWidget 的子部件
每个 Image Holder 都有一个 QTimer,并且 QTimer::timeOut() 连接到 OpenGLImageHolder::display()。
不幸的是,通过这种设置,我只能同时可视化 3 个摄像头。如果我添加第四台摄像机,三个(或两个)之一会冻结。我知道调用了显示,因为当我调整大小小部件时,我得到了正确的图像更新。
制作视频墙的正确方法是什么?要不要自己做一个openglWidget,自己的窗口,然后直接在这个openglWidget上画图?我可以使用哪些工具来分析行为(似乎标准的 msvs 分析器还不够)。
python - QtOpenGL - 共享 OpenGL 上下文
我有一个Qt4
++OpenGL
应用Python
程序,它生成几何图形,然后将其绘制在QGLWidget
.
这很好用。问题是几何生成可能需要几秒钟甚至几分钟的时间,具体取决于输入。此时没有出现Qt窗口,因为应用程序卡在initializeGL()
我试图通过使用共享资源创建另一个具有附加 OpenGL 上下文的线程来避免这种“滞后”:
核心问题是QGLContext::create
返回False,但我不知道为什么。
此外:我对另一个线程和上下文的想法是否正确?它会起作用吗?我想可能会同时出现问题glGenLists
和绘画QGLWidget
,但我希望至少其他小部件能够“响应”。
c++ - 如何在片段着色器中将分辨率从静态更改为动态
我有分辨率为 1920x1080 的片段着色器。但是,无论用户选择什么,我都想更改为动态分辨率。
我已经参考了 < http://www.fourcc.org/source/YUV420P-OpenGL-GLSLang.c > 这个链接并将该行修改ny=576.0-gl_TexCoord[0].y;\n
为ny=1080.0-gl_TexCoord[0].y;\n
1920 x 1080。
我的程序的完整来源是
如何在片段着色器中将分辨率从静态更改为动态(动态意味着用户将选择分辨率,它可以是 640x480、800x600、1920x1200 等)?