一些上下文:我正在动态生成一些基于分片的图形,方法是为每个分片创建一个几何体(仅包含两个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引用来看,它看起来非常复杂。
set_texture
geom_node.get_geom_state(n)
geom_node.set_geom_state(n, state)
如果你仔细阅读文档,就会发现 says :
不应尝试直接创建或修改渲染状态对象。相反,调用make()函数之一为您创建一个。创建一个新对象,而不是修改RenderState对象。
所以要在Geom上更新纹理 n ,给定一些纹理 texture 和一个几何节点 node
n
texture
node
attrib = TextureAttrib.make(texture) state = RenderState.make(attrib) node.set_geom_state(n, state)