Webgl QT 5.2铯集成
我正试图在QT 5.2应用程序中嵌入铯 我正在加载一个存储在qrc资源中的html文件,该文件创建一个Cesium.Viewer小部件,并使用stats.min.js监控其framePerSecond性能 Viewer.html:Webgl QT 5.2铯集成,webgl,qgraphicsview,qwebview,qt5.2,cesium,Webgl,Qgraphicsview,Qwebview,Qt5.2,Cesium,我正试图在QT 5.2应用程序中嵌入铯 我正在加载一个存储在qrc资源中的html文件,该文件创建一个Cesium.Viewer小部件,并使用stats.min.js监控其framePerSecond性能 Viewer.html: <!DOCTYPE html> <html lang="en"> <head> <!-- Use correct character set. --> <meta charset="utf-8">
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Use correct character set. -->
<meta charset="utf-8">
<!-- Tell IE to use the latest, best version (or Chrome Frame if pre-IE11). -->
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<!-- Make the application on mobile take up the full browser screen and disable user scaling. -->
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum- scale=1, minimum-scale=1, user-scalable=no">
<title>Hello World!</title>
<script src="Cesium/Cesium.js"></script>
<script src="stats.min.js"></script>
<style>
@import url(Cesium/Widgets/widgets.css);
#cesiumContainer {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
margin: 0;
overflow: hidden;
padding: 0;
font-family: sans-serif;
}
body {
padding: 0;
margin: 0;
overflow: hidden;
}
</style>
</head>
<body>
<div id="cesiumContainer"></div>
<script>
var stats = new Stats();
// Align top-left
stats.domElement.style.position = 'absolute';
stats.domElement.style.left = '0px';
stats.domElement.style.top = '0px';
document.body.appendChild( stats.domElement );
setInterval( function () {
stats.update();
}, 1000 / 60 );
var widget = new Cesium.Viewer('cesiumContainer');
</script>
</body>
</html>
你好,世界!
@导入url(Cesium/Widgets/Widgets.css);
#cesiumContainer{
位置:绝对位置;
排名:0;
左:0;
身高:100%;
宽度:100%;
保证金:0;
溢出:隐藏;
填充:0;
字体系列:无衬线;
}
身体{
填充:0;
保证金:0;
溢出:隐藏;
}
var stats=newstats();
//左上对齐
stats.domElement.style.position='绝对';
stats.domeElement.style.left='0px';
stats.domElement.style.top='0px';
document.body.appendChild(stats.doElement);
setInterval(函数(){
stats.update();
}, 1000 / 60 );
var widget=new Cesium.Viewer('cesiumContainer');
在QT端,我有以下代码:
#include <QApplication>
#include <QWebView>
#include <QWebPage>
#include <QGraphicsView>
#include <QGraphicsWebView>
#include <QGLWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsView *gview;
QGraphicsScene *scene;
QGraphicsWebView *web_view;
QWebSettings::globalSettings()->setAttribute(QWebSettings::AcceleratedCompositingEnabled, true);
gview = new QGraphicsView();
gview->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
gview->setViewport(new QGLWidget());
scene = new QGraphicsScene(gview);
web_view = new QGraphicsWebView();
scene->addItem(web_view);
gview->setScene(scene);
web_view->load(QUrl("qrc:/Resources/Viewer.html"));
web_view->resize(1500, 900);
gview->resize(1550, 950);
gview->show();
return a.exec();
}
#包括
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
QGraphicsView*gview;
qgraphicscene*场景;
QGraphicsWebView*网络视图;
QWebSettings::globalSettings()->setAttribute(QWebSettings::AcceleratedCompositingEnabled,true);
gview=新的QGraphicsView();
gview->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
gview->setViewport(新的QGLWidget());
场景=新的Qgraphicscene(gview);
web_view=新的QGraphicsWebView();
场景->添加项(web\u视图);
gview->setScene(场景);
web_view->load(QUrl(“qrc:/Resources/Viewer.html”);
网页视图->调整大小(1500900);
gview->调整大小(1550950);
gview->show();
返回a.exec();
}
我对framePerSecond速率有问题,使用QWebView小部件fps值不超过20 fps,使用QGraphicsView、QGraphicsWebView(如上所述)fps值更好,但不超过30 fps。
如果我向查看器添加几何图形,fps速率会减慢
浏览器的每秒60帧的速度似乎遥不可及。
我的QT设置有问题吗?有什么想法吗?使用基于
setInterval
的FPS跟踪器不一定反映铯渲染循环获得的FPS。尝试设置viewer.scene.debugShowFramesPerSecond=true
打开内置FPS显示,查看是否得到类似的结果。Thaks但结果不会改变,仅使用CesiumViewer,地球的流畅性就会显著降低,而且如果我尝试加载更复杂的代码,如下图所示:我的QT应用程序尝试加载它,但冻结