Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qssgrenderclippingfrustum.cpp
Go to the documentation of this file.
1
// Copyright (C) 2008-2012 NVIDIA Corporation.
2
// Copyright (C) 2019 The Qt Company Ltd.
3
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
4
// Qt-Security score:significant reason:default
5
6
7
#
include
"qssgrenderclippingfrustum_p.h"
8
9
#
include
<
QtQuick3DUtils
/
private
/
qssgutils_p
.
h
>
10
11
QT_BEGIN_NAMESPACE
12
13
QSSGClippingFrustum::QSSGClippingFrustum(
const
QMatrix4x4 &modelviewprojection,
const
QSSGClipPlane &nearPlane)
14
{
15
const
float
*modelviewProjection = modelviewprojection.data();
16
17
// update planes (http://read.pudn.com/downloads128/doc/542641/Frustum.pdf)
18
// Google for Gribb plane extraction if that link doesn't work.
19
// http://www.google.com/search?q=ravensoft+plane+extraction
20
#
define
M
(
_x
,
_y
)
modelviewProjection
[
(
4
*
(
_y
)
)
+
(
_x
)
]
21
// left plane
22
mPlanes[0].normal = {
M
(3, 0) +
M
(0, 0),
M
(3, 1) +
M
(0, 1),
M
(3, 2) +
M
(0, 2) };
23
mPlanes[0].d = (
M
(3, 3) +
M
(0, 3)) / QSSGUtils::vec3::normalize(mPlanes[0].normal);
24
25
// right plane
26
mPlanes[1].normal = {
M
(3, 0) -
M
(0, 0),
M
(3, 1) -
M
(0, 1),
M
(3, 2) -
M
(0, 2) };
27
mPlanes[1].d = (
M
(3, 3) -
M
(0, 3)) / QSSGUtils::vec3::normalize(mPlanes[1].normal);
28
29
// far plane
30
mPlanes[2].normal = { (
M
(3, 0) -
M
(2, 0)),
M
(3, 1) -
M
(2, 1),
M
(3, 2) -
M
(2, 2) };
31
mPlanes[2].d = (
M
(3, 3) -
M
(2, 3)) / QSSGUtils::vec3::normalize(mPlanes[2].normal);
32
33
// bottom plane
34
mPlanes[3].normal = {
M
(3, 0) +
M
(1, 0),
M
(3, 1) +
M
(1, 1),
M
(3, 2) +
M
(1, 2) };
35
mPlanes[3].d = (
M
(3, 3) +
M
(1, 3)) / QSSGUtils::vec3::normalize(mPlanes[3].normal);
36
37
// top plane
38
mPlanes[4].normal = {
M
(3, 0) -
M
(1, 0),
M
(3, 1) -
M
(1, 1),
M
(3, 2) -
M
(1, 2) };
39
mPlanes[4].d = (
M
(3, 3) -
M
(1, 3)) / QSSGUtils::vec3::normalize(mPlanes[4].normal);
40
#
undef
M
41
mPlanes[5] = nearPlane;
42
// http://www.openscenegraph.org/projects/osg/browser/OpenSceneGraph/trunk/include/osg/Plane?rev=5328
43
// setup the edges of the plane that we will clip against an axis-aligned bounding box.
44
for
(quint32 idx = 0; idx < 6; ++idx)
45
mPlanes[idx].calculateBBoxEdges();
46
}
47
48
QT_END_NAMESPACE
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
M
#define M(_x, _y)
qtquick3d
src
runtimerender
qssgrenderclippingfrustum.cpp
Generated on
for Qt by
1.18.0