2013-11-30 5 views
0

Есть ли способ включить проверку глубины только для треугольников, относящихся к сфере, и оставить исходный буфер глубины нетронутым и увидеть только треугольники сферической камеры?возможность выборочной проверки глубины в openGL

glEnable(GL_CULL_FACE); 
glCullFace(GL_BACK); 
glFrontFace(GL_CCW); 
glDepthMask(false); 

// рендеринг примитивный здесь (конус или сфера)

glDepthMask(true); 

Похоже, я все еще могу видеть обратно лица примитивно. cone rendering

+0

Какой это язык, между прочим? Вы можете сделать это более портативным, используя 'GL_TRUE' и' GL_FALSE' вместо 'true' и' false' (которые являются ключевыми словами C++, но не определены в C). –

+0

Код находится на C++. Спасибо за ваше предложение. Я изменю его. – user942502

ответ

1

Есть ли способ, чтобы дать глубину тестирования только для треугольников, принадлежащих к сфере и оставить первоначальный буфер глубины нетронутым и видеть только треугольники сферы, стоящие перед камерой?

Нет, но вам не обязательно. Сфера - выпуклая форма. На самом деле это абсолютный антитип выпуклых форм. Так что все, что вам нужно сделать, это избавиться от треугольников, обращенных от вас. Достаточно просто: Включить отбор невидимых поверхностей:

glEnable(GL_CULL_FACE); 
glCullFace(GL_BACK); 

Имейте в виду, что для этой работы обмотки всех треугольников сфере должны быть последовательными и, если смотреть со стороны соглашаются с передней установкой боковой обмотки. Обычно это счетчик часов, но вы можете его изменить glFrontFace

+0

Спасибо за ответ. Я забыл упомянуть в своем вопросе, что я уже включил отбрасывание лица. Я отредактировал мой вопрос и приложил снимок конуса. Пожалуйста, смотрите. Я все еще вижу задние лица. Аналогичный результат для сферы. – user942502

+0

Проблема решена. Я отключил заднее лицо, отбраковывая еще раз по ошибке, прежде чем рисовать примитив. – user942502

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

  • Нет связанных вопросов^_^