diff options
author | Titta Heikkala <titta.heikkala@theqtcompany.com> | 2015-05-22 12:11:05 +0300 |
---|---|---|
committer | Pasi Keränen <pasi.keranen@digia.com> | 2015-05-22 16:46:20 +0000 |
commit | 19b796783494f6a5ab87464485f9801b99ea6e4c (patch) | |
tree | d389b281db53180b39d6254796c35dc210eabee9 | |
parent | 8f35ac1d4d6f95e6ff0f9965636664cc2c824a30 (diff) |
Added FPS counter to the Planets example
Change-Id: Ia7900610debde06d9ddf37319f58dd48cb6fc4a1
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>
Reviewed-by: Pasi Keränen <pasi.keranen@digia.com>
-rw-r--r-- | examples/canvas3d/threejs/planets/FpsDisplay.qml | 101 | ||||
-rw-r--r-- | examples/canvas3d/threejs/planets/planets.qml | 11 | ||||
-rw-r--r-- | examples/canvas3d/threejs/planets/planets.qrc | 1 |
3 files changed, 113 insertions, 0 deletions
diff --git a/examples/canvas3d/threejs/planets/FpsDisplay.qml b/examples/canvas3d/threejs/planets/FpsDisplay.qml new file mode 100644 index 0000000..c0dad19 --- /dev/null +++ b/examples/canvas3d/threejs/planets/FpsDisplay.qml @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtCanvas3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: fpsDisplayControl + property bool hidden: true + property real fps: 0.0 + + onHiddenChanged: { + if (fpsDisplayControl.hidden) + fpsDisplay.color = "transparent"; + else + fpsDisplay.color = "#000000FF"; + } + + onFpsChanged: { + fpsDisplay.updateFps(); + } + + Rectangle { + anchors.fill: parent + id: fpsDisplay + color: "transparent" + + property real maxFps: 60.0 + property color maxFpsColor: "#00FF00" + property color minFpsColor: "#FF0000" + + function updateFps() { + var scale = (fps > maxFps)?1.0:(fps/maxFps); + var r = (1 - scale) * minFpsColor.r + scale * maxFpsColor.r; + var g = (1 - scale) * minFpsColor.g + scale * maxFpsColor.g; + var b = (1 - scale) * minFpsColor.b + scale * maxFpsColor.b; + var a = (1 - scale) * minFpsColor.a + scale * maxFpsColor.a; + fpsCauge.height = scale * fpsDisplay.height; + fpsCauge.color = Qt.rgba(r,g,b,a); + } + + Rectangle { + id: fpsCauge + width: parent.width + anchors.bottom: parent.bottom + visible: !fpsDisplayControl.hidden + } + + Text { + id: fpsText + text: ""+(fps | 0) + font.family: "Helvetica" + font.pixelSize: 16 + font.weight: Font.Light + color: "white" + anchors.fill: parent + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + visible: !fpsDisplayControl.hidden + } + } + MouseArea { + anchors.fill: parent + onClicked: { + fpsDisplayControl.hidden = !fpsDisplayControl.hidden; + } + } +} + diff --git a/examples/canvas3d/threejs/planets/planets.qml b/examples/canvas3d/threejs/planets/planets.qml index 8d24515..65febe7 100644 --- a/examples/canvas3d/threejs/planets/planets.qml +++ b/examples/canvas3d/threejs/planets/planets.qml @@ -108,6 +108,7 @@ Item { onPaintGL: { GLCode.paintGL(canvas3d); + fpsDisplay.fps = canvas3d.fps; } onResizeGL: { @@ -339,4 +340,14 @@ Item { color: "white" text: "Viewing Distance" } + + // FPS display, initially hidden, clicking will show it + FpsDisplay { + id: fpsDisplay + anchors.left: parent.left + anchors.top: parent.top + width: 32 + height: 64 + hidden: true + } } diff --git a/examples/canvas3d/threejs/planets/planets.qrc b/examples/canvas3d/threejs/planets/planets.qrc index 200322c..55b58ee 100644 --- a/examples/canvas3d/threejs/planets/planets.qrc +++ b/examples/canvas3d/threejs/planets/planets.qrc @@ -8,6 +8,7 @@ <file>PlanetButton.qml</file> <file>InfoSheet.qml</file> <file>StyledSlider.qml</file> + <file>FpsDisplay.qml</file> <file>images/sunmap.jpg</file> <file>images/mercurymap.jpg</file> <file>images/mercurybump.jpg</file> |