首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用QSGSimpleTextureNode?

如何使用QSGSimpleTextureNode?
EN

Stack Overflow用户
提问于 2014-11-03 16:02:12
回答 1查看 2.1K关注 0票数 3

我试图理解如何使用QSGSimpleTextureNode,但是Qt文档非常模糊。我想在场景图上渲染文本,所以基本上我想要的是用所有的象形文字绘制一个纹理,然后在一个QSGSimpleTextureNode上设置这个纹理。我的想法是使用标准OpenGL代码创建纹理,并将纹理数据设置为我刚刚创建的数据。我找不到一个例子来告诉我如何做到这一点。

EN

Stack Overflow用户

回答已采纳

发布于 2015-01-05 21:07:23

我会使用QSGGeometryNode而不是QSGSimpleTextureNode。如果我没有错,就不可能在QSGSimpleTextureNode中设置纹理坐标。您可以为该QQuickItem编写自定义SpriteText并覆盖updatePaintNode:

代码语言:javascript
运行
复制
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;
}
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26718063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档