Qt Quick 3D - Procedural Texture Example▲
Sélectionnez
// Copyright (C) 2020 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef GRADIENTTEXTURE_H
#define GRADIENTTEXTURE_H
#include <QtQuick3D/QQuick3DTextureData>
#include <QtGui/QColor>
class
GradientTexture : public
QQuick3DTextureData
{
Q_OBJECT
Q_PROPERTY(int
height READ height WRITE setHeight NOTIFY heightChanged)
Q_PROPERTY(int
width READ width WRITE setWidth NOTIFY widthChanged)
Q_PROPERTY(QColor startColor READ startColor WRITE setStartColor NOTIFY startColorChanged)
Q_PROPERTY(QColor endColor READ endColor WRITE setEndColor NOTIFY endColorChanged)
QML_NAMED_ELEMENT(GradientTexture)
public
:
GradientTexture();
int
height() const
;
int
width() const
;
QColor startColor() const
;
QColor endColor() const
;
public
Q_SLOTS:
void
setHeight(int
height);
void
setWidth(int
width);
void
setStartColor(QColor startColor);
void
setEndColor(QColor endColor);
Q_SIGNALS
:
void
heightChanged(int
height);
void
widthChanged(int
width);
void
startColorChanged(QColor startColor);
void
endColorChanged(QColor endColor);
private
:
void
updateTexture();
QByteArray generateTexture();
static
QColor linearInterpolate(const
QColor &
amp;color1, const
QColor &
amp;color2, float
value);
int
m_height =
256
;
int
m_width =
256
;
QColor m_startColor =
QColor(QStringLiteral("#d4fc79"
));
QColor m_endColor =
QColor(QStringLiteral("#96e6a1"
));
}
;
#endif
// GRADIENTTEXTURE_H