问题标签 [qsgclipnode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - 如何调整纹理的大小以仅占用 QQuickItem UI 的一部分
我已通过以下方式覆盖,以在此处调用的派生类updatePaintNode
上绘制 OpenGL 纹理。QQuickItem
MyQQuickItem
这可以很好地呈现纹理内容,但涵盖了我的整个MyQQuickItem
UI。
如何减少纹理的底部边距以适应 80% 的高度MyQQuickItem
。我想将纹理渲染到一部分 MyQQuickItem
并将其余部分留空或黑色?内有可能吗updatePaintNode
。
注意这里的纹理大小不是UI窗口大小。我的纹理大小是800 x 800。而 UI 窗口大小不同,取决于屏幕。
c++ - 如何在不导致内存泄漏的情况下使用 QSGGeometryNode 并确保正确清理
我使用 a QSGGeometry
, QSGVertexColorMaterial
& a在这里的派生类QSGGeometryNode
上实时绘制一些东西。QQuickItem
MyQuickItem
以下是我updatePaintNode
的重绘逻辑关键所在的方法。
问题:
上述逻辑效果很好。功能上完全没有问题。也没有性能问题。但我担心我会导致内存泄漏。看看上面updatePaintNode
我分配原始指针的方法中的以下两行。
我分配它们并且我不删除它们。这是因为它们应该被删除的点是在updatePaintNode
完成之后。那不在我的控制之下。
问题:
如何确保 2 个指针material
&child_node
正确地从内存中清除?
是否child_node->setFlag(QSGNode::OwnsMaterial)
像我在上面所做的那样设置了指向QtSceneGraph的指针的所有权并减轻了我删除指针的负担?
次要问题:
我正在使用oldNode->removeAllChildNodes()
清除上一帧中绘制的数据。这是在绘制新数据之前清除屏幕上先前数据的好方法吗?
PS:
我重申:这个实现没有性能问题。我只是想确保我没有造成任何内存泄漏。我尝试使用material
&child_node
作为智能指针,如下所示:
但是,当material
&child_node
稍后从内存中自动清除时,这会导致崩溃。