2012-05-04 4 views
2

Я запускаю проект iOS, используя инфраструктуру isgl3d для отображения файлов подкачки.Проблемы с прозрачностью ISGL3D

У меня есть стильный автомобиль с 0,5 альфа-окнами, которые я хочу отобразить на фоне камеры, ища некоторую дополненную реальность.

Альфа на окнах выглядит нормально, но когда я добавляю объект, я замечаю, что он прозрачно отображает весь объект, где находятся окна. В том числе салон автомобиля.

Как и (в примере, клавиатура может быть виден через приборную панель, сиденья и так далее. Должны быть твердыми)

bad car is bad

салона автомобиля является отдельным объектом с альфа 1.0.

Я бы предпочел не показывать «призрачный автомобиль» в моем проекте, но я не нашел пути вокруг этого.

Неужели кто-нибудь столкнулся с одной и той же проблемой и в итоге достиг решения?

SOLVED: Благодаря ответу Деми. Вот окончательный код:

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

Проблема: ваше стекло переписывает альфа-канал. Не делайте его не модифицированным, если нарисовать автомобиль. Отключить запись в альфа-канал цветового буфера при рисовании прозрачных элементов с помощью glColorMask(1, 1, 1, 0). Не забудьте восстановить после прозрачного рисунка: glColorMask(1, 1, 1, 1) !!!

+0

Кровавый хорошо работает! Потратил меня на то, чтобы выяснить, где его зажать, но я добавил решение для OP. –

Смежные вопросы