50 void setFillTextureProvider(QSGTextureProvider *provider)
52 if (provider == m_textureProvider)
55 if (m_textureProvider !=
nullptr) {
56 disconnect(m_textureProvider, &QSGTextureProvider::textureChanged,
57 this, &QSGCurveFillNode::handleTextureChanged);
58 disconnect(m_textureProvider, &QSGTextureProvider::destroyed,
59 this, &QSGCurveFillNode::handleTextureProviderDestroyed);
62 m_textureProvider = provider;
63 markDirty(DirtyMaterial);
65 if (m_textureProvider !=
nullptr) {
66 connect(m_textureProvider, &QSGTextureProvider::textureChanged,
67 this, &QSGCurveFillNode::handleTextureChanged);
68 connect(m_textureProvider, &QSGTextureProvider::destroyed,
69 this, &QSGCurveFillNode::handleTextureProviderDestroyed);
72 updateMaterialFlags();
126 void appendTriangle(
const std::array<QVector2D, 3> &v,
127 const std::array<QVector2D, 3> &n,
128 std::function<QVector3D(QVector2D)> uvForPoint
131 QVector3D uv1 = uvForPoint(v[0]);
132 QVector3D uv2 = uvForPoint(v[1]);
133 QVector3D uv3 = uvForPoint(v[2]);
135 QVector2D duvdx = QVector2D(uvForPoint(v[0] + QVector2D(1, 0))) - QVector2D(uv1);
136 QVector2D duvdy = QVector2D(uvForPoint(v[0] + QVector2D(0, 1))) - QVector2D(uv1);
138 m_uncookedIndexes.append(m_uncookedVertexes.size());
139 m_uncookedVertexes.append( { v[0].x(), v[0].y(),
140 uv1.x(), uv1.y(), uv1.z(),
141 duvdx.x(), duvdx.y(),
142 duvdy.x(), duvdy.y(),
146 m_uncookedIndexes.append(m_uncookedVertexes.size());
147 m_uncookedVertexes.append( { v[1].x(), v[1].y(),
148 uv2.x(), uv2.y(), uv2.z(),
149 duvdx.x(), duvdx.y(),
150 duvdy.x(), duvdy.y(),
154 m_uncookedIndexes.append(m_uncookedVertexes.size());
155 m_uncookedVertexes.append( { v[2].x(), v[2].y(),
156 uv3.x(), uv3.y(), uv3.z(),
157 duvdx.x(), duvdx.y(),
158 duvdy.x(), duvdy.y(),
163 void appendTriangle(
const QVector2D &v1,
166 const QVector3D &uv1,
167 const QVector3D &uv2,
168 const QVector3D &uv3,
172 const QVector2D &duvdx,
173 const QVector2D &duvdy)
175 m_uncookedIndexes.append(m_uncookedVertexes.size());
176 m_uncookedVertexes.append( { v1.x(), v1.y(),
177 uv1.x(), uv1.y(), uv1.z(),
178 duvdx.x(), duvdx.y(),
179 duvdy.x(), duvdy.y(),
183 m_uncookedIndexes.append(m_uncookedVertexes.size());
184 m_uncookedVertexes.append( { v2.x(), v2.y(),
185 uv2.x(), uv2.y(), uv2.z(),
186 duvdx.x(), duvdx.y(),
187 duvdy.x(), duvdy.y(),
191 m_uncookedIndexes.append(m_uncookedVertexes.size());
192 m_uncookedVertexes.append( { v3.x(), v3.y(),
193 uv3.x(), uv3.y(), uv3.z(),
194 duvdx.x(), duvdx.y(),
195 duvdy.x(), duvdy.y(),