问题标签 [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 上下文
我正在编写一个带有 Qt5 opengl 上下文的程序。它在我的桌面(fedora 23)上运行良好。但我必须在 pi 2 上运行它。所以我在每个地方下载 Qt5 源代码并在 pi 上本地编译它。当我尝试在 pi 上编译和运行我的程序时,它会引发以下错误:
在 Qt 论坛中,我看到 Raspberry pi XCB 无论如何都无法与 egl 集成。此外,当我配置 Qt 源代码时,EGL on x 选项为否。但是启用了 GLX。无论如何设置 QXcbIntegration 以在 pi 上使用 GLX?
我试图修复 XCB 和 egl 集成。所以我尝试在 qtbase 的 config.tests/qpa 目录中重新编译 egl-x11 测试以查看错误。输出是:
有没有办法修复 XCB 和 EGL 集成?
如果在树莓派上既不能进行 EGL 也不能进行 GLX 集成,我该怎么做才能在 pi 上运行我的应用程序?
opengl - 如何使用 QOpenGLFrameBufferObject 进行阴影映射?
我正在尝试使用 Qt 的 OpenGL 类渲染带有阴影的场景(如下所示平台上的自行车)。
我意识到我们需要为此做两次传球。
第一次从灯光的角度渲染深度图,第二次从相机的角度渲染场景,片段着色器使用深度图作为纹理来确定片段是否在阴影内.
为了捕获深度图,我将从灯光的角度将场景渲染到帧缓冲区中,如下所示
每个模型都使用
带顶点着色器
和片段着色器
然后为了在第二遍中使用阴影纹理,我在第二遍的片段着色器中执行此操作。
但以上所有似乎都没有区别。第二遍我看不到任何阴影。
有人可以指出我哪里出错了吗?
opengl - 如何使用 QOpenGLTexture 构建立方体贴图纹理?
我想使用 6 个图像使用 QOpenGLTexture 构造一个立方体贴图纹理。我想我把它们放对了。
我正在使用以下代码来构造立方体贴图
然后我在paintGL()期间绑定环境纹理如下
顶点着色器片段如下
片段着色器片段如下
我还有另一部分代码在天空盒上渲染立方体贴图。虽然我能够将 6 个图像投影到天空盒上并正确渲染,但我无法在场景中的圆环物体上渲染反射。
有人可以帮忙吗?
c++ - 最大化窗口时Qt QApplication帧率下降
我们将 Qt 用于可视化引擎查看器,但该QApplication::processEvents()
方法存在问题。由于我们需要控制帧率(以游戏循环方式),我们重写了 QApplication 来定义我们自己的和我们的游戏循环,看起来像
这很好用,processEvents()
通话时间约为 0.001 秒,而对于空场景,通话doFrame()
时间约为 0.0001 秒。现在,当我们双击标题栏(最大化窗口)时,我们遇到了一个问题。实际上,在这样做之后,processEvents()
调用从大约 0.001 秒变为大约 0.01 秒 (*10)。大部分时间似乎都被占用了QPlatformBackingStore::composeAndFlush()
使用的查看器是基于 QOpenGLWidget 的,所有的渲染都是在 Qt 之外完成的(我们在 Qt FBO 中编写)。
请注意,我们没有覆盖QApplication::processEvents()
.
谢谢
linux - 即使拦截鼠标事件,Qt 窗口也会移动
我有一个 Qt OpenGL(使用 qt 5.5)应用程序,您可以在其中单击以拖动 3D 场景中的对象。
这是通过有一个QOpenGLWidget
覆盖 mousePressEvent
和的子类来实现mouseReleaseEvent
的mouseMoveEvent
。
但是,当我拖动一个对象时,我可以在窗口开始激活窗口移动模式之前将其移动一帧,而我的鼠标移动实际上开始移动整个窗口,就好像我在拖动标题栏一样。
我怀疑应用程序和我的窗口管理器(kwin 5.4.3)之间存在冲突,但我不知道去哪里调试这个问题,以及这是我的应用程序的错还是我必须修复我的窗口管理器。
python - 调用 Python 对象进行连续场景更新时超出最大递归深度
我正在使用 opengl 在我的 Python 和 QT 应用程序中渲染一些图形。我按照许多教程将 openGL 添加到应用程序中,但它们都没有对场景进行持续更新。一个简单的例子,我想继续旋转场景中的对象,所以我不断增加角度并更新场景,但这会导致错误!
这是我在 github 上的代码(可以在这里找到),我刚刚添加了自动旋转:
updateGL 函数可以在导致此错误的 setXRotation 函数中找到:
谢谢
opengl - OSG 将场景渲染成图像
我试图在我的 Qt 程序中将 OSG 场景渲染为图像。参考 SnapImageDrawCallback 的例子(https://www.mail-archive.com/osg-users@lists.openscenegraph.org/msg45360.html)。
我将此设置为 osg::Viewer 的相机的 FinalDrawCallback,但我因空白图像而失败,并在调用图像时收到此警告“警告:在 State::apply() 开始时检测到 OpenGL 错误'无效操作'”-> readPixels,我的 osgViewer::Viewer 嵌入在 QQuickFramebufferObject 中。任何人都可以提供一些建议吗?
qt5 - QOpenGLFramebufferObject 的图像没有更新
以下是我的小部件的代码,它是 QOpenGLWidget 的子类。应该发生的是帧缓冲区对象在每帧之间在白色和黑色之间闪烁,但它只显示白色,这告诉我它只渲染一次然后从不更新。
我在这里正确使用帧缓冲区对象吗?还有一种更合适的方法可以在屏幕外绘制一些东西,然后在 QOpenGLWidget 中显示它吗?
c++ - 如何将framebuffer对象中的离屏数据绘制到QGLWidget中?
我使用 glGenFramebuffer、glBindFramebuffer 和其他相关函数来创建 Framebuffer Object(FBO),并使用 FBO 绘制离屏数据。现在我的问题是我在 QGLWidget 中完成了上述步骤,如何将 FBO 中的数据绘制回 QGLWidget?非常感谢!
c++ - Qt QOpenGLFunction_4_5_Compatibility 与 QOpenGLExtraFunctions
我目前在我的 GLWidget 中使用 QOpenGLFunction_4_5_Compability。因为QOpenGLFunctions不包含glLoadIdentity、glOrtho、glGenBuffers、glBindBuffer等。
为什么有些人使用 QOpenGLFunctions 而不是 QOpenGLFunction_4_5_Compability?QOpenGLFunctions 有什么特别之处?
我应该使用哪一个?