2012-05-04 141 views
2

我正在运行使用isgl3d框架显示pod文件的iOS项目。ISGL3D透明度问题

我有一个时尚的小车与0.5阿尔法的窗户,我希望呈现在相机的背景下,寻求一些增强现实的善良。

阿尔法窗户上看起来不错,但是当我添加了对象,我发现它呈现透明整个对象,那里的窗户。包括汽车的内部。

像这样(例如,键盘可通过仪表板看到的,座椅等。应该是固体)

bad car is bad

的汽车内部是具有α1.0一个单独的对象。

我不想在我的项目中显示“幽灵车”,但我还没有找到解决办法。

有没有人遇到同样的问题,并最终达成解决方案?

求助: 感谢德米的回答。这里是最终的代码:

// 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); 

回答

3

问题:你的玻璃重写了alpha通道。拉车的玻璃时不要修改。当您使用glColorMask(1, 1, 1, 0)绘制透明项目时,禁止写入颜色缓冲区的Alpha通道。透明绘图后不要忘记恢复:glColorMask(1, 1, 1, 1) !!!

+0

血腥井工作!花了我一段时间弄清楚在哪里夹住它,但我已经将解决​​方案添加到OP。 –