模型遮挡问题一般都是深度测试设置,但是我今天怎么设置都没用。不过还好我做了5个案例,有一个是正确的,最后查找终于找出原因。
先看一下效果图:
这是正确的效果,之前错误是这种情况下,黄色的没有被蓝色遮挡。
_model = Sprite3D::create(RESOURCE_FILES_3D + "cocaine.c3b");
_model->setPosition3D(Vec3(0.0f, 0, 20));
_model->setRotation3D(Vec3(0, 0, 0));
_model->setScale(0.019f);
_model->setMaterial(mat,0);
_model->setMaterial(mat->clone(),1);
_model->getMaterial(0)->setTechnique("m0");
_model->getMaterial(1)->setTechnique("m4");
_model->getMeshByIndex(0)->getGLProgramState()->setUniformFloat("transparent",0.0f);
<span style="color:#cc0000;">//_model->getMeshByIndex(0)->setVisible(false);</span>
这就是代码,meshIndex 为0的不能设置为不可见,否则就出问题。还有0这个mesh必须要有东西才可以,但这个东西不是我最后想要的,我的是一个球,颜色是黑色的,为了在旋转时不被看到,我建模时弄的很小,很远。至于为什么是这样,不知道是我建模或是材质有问题,还其它,我也不清楚。
有高手看见可以回复一下,解释解释为什么,谢谢。