我正在使用isgl3d框架运行iOS项目来显示pod文件。
我有一个带有0.5个alpha窗口的时尚车,我希望在相机背景上渲染,寻求增强现实效果。
Windows上的alpha看起来没问题,但是当我添加对象时,我注意到它透明地呈现整个对象,窗口在哪里。包括汽车内饰。
就像这样(例如,通过仪表板可以看到键盘,座位等等。应该是实心的)
汽车内饰是一个单独的物体,alpha 1.0。
我宁愿不在我的项目中展示“鬼车”,但我还没有找到解决方法。
有没有人遇到过同样的问题,并最终达成了解决方案?
解决: 感谢Demi的回答。这是最终的代码:
// Render opaque objects
[_scene render:renderer opaque:true];
// First planar shadow pass (if needed)
[self renderPlanarShadows:renderer];
// Render transparent objects
glColorMask(1, 1, 1, 0);
if (_zSortingEnabled) {
[_scene renderZSortedAlphaObjects:renderer viewMatrix:&viewMatrix];
} else {
[_scene render:renderer opaque:true];
}
glColorMask(1, 1, 1, 1);
答案 0 :(得分:3)
问题:你的玻璃重写了alpha通道。在绘制汽车玻璃时不要修改它。使用glColorMask(1, 1, 1, 0)
绘制透明项时,禁用对颜色缓冲区的Alpha通道的写入。不要忘记在透明绘图后恢复:glColorMask(1, 1, 1, 1)
!!!