作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解如何使用 QSGSimpleTextureNode 但 Qt 文档非常模糊。我想在场景图上渲染文本,所以基本上我想要的是绘制包含所有字形的纹理,然后在 QSGSimpleTextureNode 上设置该纹理。我的想法是使用标准 OpenGL 代码创建纹理,并将纹理数据设置为我刚刚创建的数据。我找不到示例来展示如何实现这一目标。
最佳答案
我会使用 QSGGeometryNode 而不是 QSGSimpleTextureNode。如果我没记错的话,不可能在 QSGSimpleTextureNode 中设置纹理坐标。您可以为 SpriteText 编写自定义 QQuickItem 并覆盖 updatePaintNode:
QSGNode* SpriteText::updatePaintNode(QSGNode *old, UpdatePaintNodeData *data)
{
QSGGeometryNode* node = static_cast<QSGGeometryNode*>(old);
if (!node){
node = new QSGGeometryNode();
}
QSGGeometry *geometry = NULL;
if (!old){
geometry = new QSGGeometry(QSGGeometry::defaultAttributes_TexturedPoint2D()
,vertexCount);
node->setFlag(QSGNode::OwnsGeometry);
node->setMaterial(material); // <-- Texture with your glyphs
node->setFlag(QSGNode::OwnsMaterial);
geometry->setDrawingMode(GL_TRIANGLES);
node->setGeometry(geometry);
} else {
geometry = node->geometry();
geometry->allocate(vertexCount);
}
if (textChanged){
//For every Glyph in Text:
//Calc x + y position for glyph in texture (between 0-1)
//Create vertexes with calculated texture coordinates and calculated x coordinate
geometry->vertexDataAsTexturedPoint2D()[index].set(...);
...
node->markDirty(QSGNode::DirtyGeometry);
}
//you could start timer here which call update() methode
return node;
}
关于qt - 如何使用QSGSimpleTextureNode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26718063/
我是一名优秀的程序员,十分优秀!