Commit Graph

25 Commits

Author SHA1 Message Date
Even Oscar Andersen 7796a5632e wasm: Move OpenGLUnderQml to VertexBufferObject to satisfy WebGL
To make the example work under webassembly also

Change-Id: I9eb7ab4503efcffa68d4de3008c8275f723ec659
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2024-06-11 12:04:07 +02:00
Lucie Gérard 0dc4fd240a Use SPDX license identifiers
Replace the current license disclaimer in files by
a SPDX-License-Identifier.
Files that have to be modified by hand are modified.
License files are organized under LICENSES directory.

Pick-to: 6.4
Task-number: QTBUG-67283
Change-Id: I63563bbeb6f60f89d2c99660400dca7fab78a294
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2022-06-11 08:05:15 +02:00
Friedemann Kleint 0b2311a62b Scenegraph examples: Use suffix-less RHI constants
Complements 23dbe3d6e0.

Pick-to: 6.2
Change-Id: Ic1bda49a888b0580ac483d650b879a9ae843129b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2021-11-23 18:42:51 +01:00
Laszlo Agocs de45522283 openglunderqml example: remove unnecessary resetOpenGLState call
Also request the OpenGL RHI backend explicitly, like all the other
similar examples (d3d11underqml, and so on) do.

Calling resetOpenGLState() in this example is pointless because it
happens before returning from the custom rendering function, and the
endExternalCommands() call achieves the same internally, i.e. the rhi
will know that cached state cannot be used anymore. There are other
valid uses cases for resetOpenGLState() but this example does not have
those.

Change-Id: Ifa7861b80c29c174d02cfe37fe8ef8eed7344195
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-06-11 18:13:59 +02:00
Ulf Hermann 406f15ce0e Quick: Don't qualify OpenGL includes
The headers are moving from QtGui to QtOpenGL. By avoiding the
qualification we can keep them compiling either way. Also, add
opengl-private to make the types available.

Also removed the QGraphicsRotation hack to get access to the projected
rotation function of QMatrix4x4. The function is public now.

Task-number: QTBUG-74409
Change-Id: I216e8ca09f8e247f96627b081308e3a57c55c29c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-01-27 13:03:18 +01:00
Laszlo Agocs 192d4fa0af Make openglunderqml functional with and without the rhi
It has to be written following the new split approach (beforeRendering
for resource setup, beforeRenderPassRecording to issue the actual
underlay draw calls), but it will then work both with and
without QSG_RHI=1.

Change-Id: I9b7b35434aa0caec543cae268064b2684256382d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-07-04 19:49:08 +02:00
Laszlo Agocs 341ab77080 Add the graphics api independent scenegraph port
Opt in via environment variables:
QSG_RHI=1 -> enable using QRhi instead of GL
QSG_RHI_BACKEND -> set to vulkan, metal, d3d11, gl to override the default
(the default is d3d11 on Windows, metal on Mac, gl elsewhere)

Or force a given rhi backend via the existing
QQuickWindow::setSceneGraphBackend().

Otherwise the default behavior is the same as before, the rhi code path
is never active by default.

-no-opengl builds are supported in the sense that they work and default
to the software backend. However, the rhi code path cannot currently be
used in such builds, even though QRhi from qtbase is fully functional
with Vulkan, D3D, or Metal even when qtbase was configured with
-no-opengl. This cannot be utilized by Quick atm due to OpenGL usage
being all over the place in the sources corresponding to the default
backend, and those host the rhi code path as well. This will be cleaned up
hopefully in Qt 6, with the removal all direct OpenGL usage.

Other env.vars.:
QSG_RHI_DEBUG_LAYER=1 -> enable D3D debug or Vulkan validation layer
(assuming the system is set up for this)
QSG_RHI_SHADEREFFECT_DEBUG=1 -> print stuff from ShaderEffect
QSG_SAMPLES=1,2,4,... -> MSAA sample count (but QSurfaceFormat works too)
QT_D3D_ADAPTER_INDEX=0,1,... -> D3D adapter index
QT_VK_PHYSICAL_DEVICE_INDEX=0,1,... -> Vulkan physical device index
QSG_RHI_UINT32_INDEX=1 -> always use uint index data (both
merged/unmerged, convert when needed - with some rhi backends this is
implicit)
QSG_RENDER_LOOP -> to override the render loop as usual. The default
with RHI is threaded for Metal, threaded for Vulkan on Windows, basic
for Vulkan on Linux and Android (to be checked later), while the existing
rules apply for OpenGL.

Not supported when running with QRhi:
  - particles
  - compressed atlases (though this is transparent to the apps)
  - QSGRenderNode
  - QQuickRenderControl
  - QQuickFramebufferObject
  - certain QQuickWindow functionality that depends directly on OpenGL
  - anisotropic filtering for textures
  - native text may lack some gamma correction
  - QSGEngine applicability unclear
  - some QML profiler logs may be incorrect or irrelevant

Change-Id: I7822e99ad79e342e4166275da6e9e66498d76521
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-07-04 10:44:26 +02:00
Shawn Rutledge 499ec43937 use nullptr consistently (clang-tidy)
From now on we prefer nullptr instead of 0 to clarify cases where
we are assigning or testing a pointer rather than a numeric zero.

Also, replaced cases where 0 was passed as Qt::KeyboardModifiers
with Qt::NoModifier (clang-tidy replaced them with nullptr, which
waas wrong, so it was just as well to make the tests more readable
rather than to revert those lines).

Change-Id: I4735d35e4d9f42db5216862ce091429eadc6e65d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-02-26 07:13:18 +00:00
Laszlo Agocs e8801e7c09 Enable shader disk cache in Qt Quick
Change-Id: I14ee97ee75664c5dfcd229a5be2be6294c936b2c
Task-number: QTBUG-55496
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-11-27 22:10:41 +00:00
Jani Heikkinen aad500cafb Updated license headers
From Qt 5.7 -> examples are lisenced under BSD license, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/

Updated license headers to use new BSD header instead of LGPL21 one
(in those files which will be under BSD)

Change-Id: I09ba19590e9425d5116a6c27cbc183debb485dde
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-20 11:46:11 +00:00
Friedemann Kleint 1e2e356f0f Port examples to new connection syntax.
Change-Id: I121c59ac0ad56acb4cd54b99ecd37567368385ce
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
2015-07-22 22:16:19 +00:00
Gunnar Sletta 50fcdfd705 Include QQuickWindow::resetOpenGLState() in OpenGL under QML example.
Change-Id: Ieae110475dfb3f91d68919c7075054b5400f9e73
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-04-21 21:07:36 +00:00
Jani Heikkinen c5796292ad Update copyright headers
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.

Change-Id: I61120571787870c0ed17066afb31779b1e6e30e9
Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
2015-02-12 10:28:11 +00:00
Jani Heikkinen e7ceacda70 Update license headers and add new licenses
- Renamed LICENSE.LGPL to LICENSE.LGPLv21
- Added LICENSE.LGPLv3 & LICENSE.GPLv2
- Removed LICENSE.GPL

Change-Id: I84a565e2e0caa3b76bf291a7d188a57a4b00e1b0
Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
2014-08-25 11:28:46 +02:00
Frederik Gladhorn 41e924eb6e Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
	.qmake.conf
	examples/quick/scenegraph/openglunderqml/squircle.h
	src/quick/doc/src/qmltypereference.qdoc
	src/quick/scenegraph/qsgthreadedrenderloop.cpp

Change-Id: Ife4f4b897044a7ffcd0710493c6aed1d87cf1ef9
2014-07-02 10:32:33 +02:00
Laszlo Agocs 08f9b552c3 Avoid direct GL calls in Qt Quick examples and tests
Change-Id: I204a5513708aeff5cae00d06d4f0c27c20a13ace
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-07-01 14:20:49 +02:00
Gunnar Sletta 1e39eb5f70 Separate renderer out in "OpenGL under QML" example.
The example was promoting very bad practice.

Change-Id: Ibb83780ec33e59ee5aabf65a775705dd0da681e6
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-06-16 09:12:48 +02:00
Gunnar Sletta f0553874b3 Respect device pixel ratio in "OpenGL under QML" example.
Change-Id: I1b67acfdcdb1fb47593a6acd62ffd6c3315b5503
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2013-11-14 15:54:11 +01:00
Shawn Rutledge d5e612fb3e Re-implemented itemChange must always call QQuickItem::itemChange
Documentation for that fact, and the windowChanged signal.
Fix existing QQuickItem subclasses which didn't call
QQuickItem::itemChange.  Examples should rather connect to the
windowChanged() signal.

Change-Id: Ieddcdbe69f849ddb120b64be9c5e0a21393b0ed9
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
2013-04-26 12:57:03 +02:00
Samuel Rødal bb803baa36 Fixed invalid GLSL in openglunderqml example.
First argument to pow is not allowed to be negative.

Task-number: QTBUG-30191
Change-Id: Iac6c25d84e26777564d6741690aab552a0bb513e
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
2013-03-18 09:15:24 +01:00
Sergio Ahumada 83deab8d1b Update copyright year in Digia's license headers
Change-Id: I6c3bd7bebe3d62d1cfd0fa6334544c9db8398c76
Reviewed-by: Akseli Salovaara <akseli.salovaara@digia.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
2013-01-10 19:52:37 +01:00
Gunnar Sletta 077ad5f304 Documentation for scene graph examples.
Change-Id: Idb39fc0b6d5e538b90ae8a0b98d9f4d77e1fb617
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2013-01-07 10:44:02 +01:00
Alan Alpert f21e9ba6ef Remove interim compatibility measures
Also update some variables in qtdeclarative which failed to update
rootItem->contentItem.

Change-Id: Id34e29546a22a74a7ae2ad90ee3a8def6fc541d3
Reviewed-by: Alan Alpert <416365416c@gmail.com>
2012-10-16 07:24:06 +02:00
Iikka Eklund 46010aa7a2 Change copyrights from Nokia to Digia
Change copyrights and license headers from Nokia to Digia

Change-Id: Ie7f5d49ed8235d7a7845ab68f99ad1c220e64d5c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2012-09-23 08:22:24 +02:00
Gunnar Sletta 3ddf7f1cf6 Three scene graph examples with docs.
How to make a custom QSGGeometry, how to use QSGSimpleMaterial and how
to use render with raw GL.

Change-Id: I3e5a32b6ae12d7d781c11050ed26a54845e92cca
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
2012-08-13 15:06:46 +02:00