Webgl QT 5.2铯集成

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">

我正试图在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">
  <!-- 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应用程序尝试加载它,但冻结