我需要在我的QGLWidget(Qt OpenGL小部件)中加载3D模型(.3ds文件).我正在寻找在Linux,Windows和Mac下运行的跨平台解决方案.
我在网上找到了一些解决方案,但仍然无法在我的Qt应用程序中集成任何解决方案:
Assimp:它不是跨平台的,不支持.3ds模型(http://assimp.sourceforge.net/)
Qt3D:它是跨平台的,并且看起来是OpenGL小部件的正确选择.不幸的是,我仍然没有找到使用它的方法.(https://github.com/qtproject/qt3d)
Qt Quick:它使用QML文件而不是QT小部件.
3ds Loader:http://www.spacesimulator.net/wiki/index.php? title = Tutorials:3ds_Loader
有什么建议吗?
我正在尝试将以前的项目移植到新的Qt5 OpenGL类.我想使用FBO渲染到纹理.之前的代码使用了多个纹理,我按需附加到FBO.因此,我会附加某个纹理对象,执行渲染,附加另一个纹理并执行不同的操作,并将输出渲染到新附加的纹理,依此类推.
我想知道如何使用Qt5 OpenGL类进行此操作.例如,我无法弄清楚如何将某个QOpenGLTexture对象附加到一个对象,QOpenGLFrameBufferObject以便我可以渲染它.我可以看到有一种texture()方法和takeTexture()方法.但他们都只返回纹理ID.另外,如何更改活动纹理单元?例如,我想在我的着色器程序中从两个纹理中进行采样.所以,我需要将两个纹理绑定到不同的纹理单元.
为了澄清,我对新API的主要问题是我没有看到任何方法QOpenGLFrameBufferObject会返回一个QOpenGLTexture对象.只有toImage()方法texture()和takeTexture()方法.我想我可以QOpenGLTexture使用QImage返回来构造一个toImage().但我不确定这是否有效.
至于texture()和takeTexture(),我没有看到如何使用新类来使用它们的返回值.
我正在尝试编写一个使用 QOpenGLWidget 的 C++ 应用程序,但 Qt Creator 在这一行给出了“'QOpenGLWidget'文件未找到”错误:
#include <QOpenGLWidget>
Run Code Online (Sandbox Code Playgroud)
文档说 QOpenGLWidget 是在 Qt 5.4 中引入的,我相信我正在运行 Qt 5.12.1;qmake --version给出:
QMake version 3.1
Using Qt version 5.12.1 in /home/oreilly/Qt5.12.1/5.12.1/gcc_64/lib
Run Code Online (Sandbox Code Playgroud)
而且,在Qt Creator菜单中Tools -> Options... -> Kits也表示Qt 5.12.1。Qt Creator 允许我使用#include <QOpenGLWindow>(也在 Qt 5.4 中与 QOpenGLWidget 一起引入)、编译和链接 OpenGL 应用程序,不会出现错误。
我究竟做错了什么?QOpenGLWidget 在哪里?