我要发帖 回复

中级会员

10

主题

160

积分

0

专家分

:

私信
发表时间 : 2012-5-2 10:57:06 | 浏览 : 1225    评论 : 3
我想为场景中的某个vsNode设置新的材质如何实现啊?
我的代码如下:
vsNode* myNode=obj->find_named("o1");
vrState* m_state;
..........
vsGeometry *m_geometry=static_cast<vsGeometry *>(myNode);
..........//设置了m_state
m_geometry->setState(m_state);
到了红色的这一步就出现访问冲突。
难道就不能为特定的vsNode改变材质吗?

最近VR访客

luckycq211 评论于2012-5-2 22:48:35
用vsNode转换成的vsGeometry也不能使用getState()??我一用就会访问冲突!!!!怎么回事啊?
我在superdemo大大的纹理切换例子里面看见了这种用法啊
superdemo 评论于2012-5-20 20:46:32
指针操作前一定要保证指针指向的内存是存在的
一般来说是使用if(p!= NULL)...
很大可能是你的m_geometry指针为NULL,追溯到前面就可能是myNode为NULL.
在模型加载选项Geometry Configuration里,保证Preserve Generic Names 、Preserve Generic Nodes选项是勾上(缺省是没勾上),只有勾上那选项才能保证在cr里设置的默认o1、g1等名称(节点)在程序里通过find_named("o1")找得到.
xieshouguo520 评论于2012-5-26 17:38:10
三楼的做法可以,我也是搞了好久,才发现。并且不同的机器上,命名的节点o1下能够容纳的面节点数目还不相同,数目不能太多,不然结果还不正确

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-1-28 03:38 PM

返回顶部