我使用的是Qt的官方fboItem示例,但它不能正确呈现。在框架内应该自动调用createReneller,并打印日志,发现它没有被调用,所以不执行渲染。
但为什么不自动调用呢?
查看Qt官方提到,只有当当前程序使用OpenGL渲染时才会调用,但如何设置程序支持OpenGL渲染呢?https://doc.qt.io/qt-6/qquickframebufferobject.html
这是简单的代码
class FboInSGRenderer : public QQuickFramebufferObject
{
Q_OBJECT
QML_NAMED_ELEMENT(Renderer)
public:
Renderer *createRenderer() const;
};
class LogoInFboRenderer : public QQuickFramebufferObject::Renderer
{
public:
LogoInFboRenderer()
{
logo.initialize();
}
void render() override {
logo.render();
update();
}
QOpenGLFramebufferObject *createFramebufferObject(const QSize &size) override {
QOpenGLFramebufferObjectFormat format;
format.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
format.setSamples(4);
return new QOpenGLFramebufferObject(size, format);
}
LogoRenderer logo;
};
QQuickFramebufferObject::Renderer *FboInSGRenderer::createRenderer() const
{
qDebug() << "#createRenderer call......";
return new LogoInFboRenderer();
}
int main(int argc, char**argv)
{
QGuiApplication app(argc, argv);
QQuickView view;
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl("qrc:///scenegraph/fboitem/main.qml"));
view.show();
return app.exec();
}
那么,我错在哪里呢?
我的开发环境:
Qt 5.15.2 MinGW64
Windows 10 Pro
Processor: Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz 2.30 GHz
Graphics Card: NVIDIA GeForce MX330
1条答案
按热度按时间oxiaedzo1#
问题解决了
我的本地注册表被某个软件修改了
所以,只要删除这个并重新启动计算机,就会没事的