代码之家  ›  专栏  ›  技术社区  ›  ash

如何更改GeomNode中特定Geom的纹理?

  •  0
  • ash  · 技术社区  · 7 年前

    一些上下文:我正在动态生成一些基于分片的图形,方法是为每个分片创建一个几何体(仅包含两个Tri),然后将所有几何体组合到整个地图的单个几何节点中。

    根据 panda3d docs ,GeomNode的用途之一是能够更改单个Geoms的纹理。然而,它并没有解释如何做到这一点。

    set_texture 在Geom本身上不起作用(可能是因为RenderState在Geom节点中,而不是Geom中)。我可以使用 geom_node.get_geom_state(n) ,然后用 geom_node.set_geom_state(n, state) ,但我不知道如何更改RenderState以应用纹理,从API引用来看,它看起来非常复杂。

    1 回复  |  直到 7 年前
        1
  •  0
  •   ash    7 年前

    如果你仔细阅读文档,就会发现 says :

    不应尝试直接创建或修改渲染状态对象。相反,调用make()函数之一为您创建一个。创建一个新对象,而不是修改RenderState对象。

    所以要在Geom上更新纹理 n ,给定一些纹理 texture 和一个几何节点 node

    attrib = TextureAttrib.make(texture)
    state = RenderState.make(attrib)
    node.set_geom_state(n, state)