Opengl - вопрос
Как сделать так, чтобы объект не отрисовывался в буфер кадра (для операции с буфером трафарета)?
Если перед рисованием объекта, который не должен быть в результате виден поставить glColorMask(0,0,0,0); - объект будет ннарисован, но черным цветом.
Нужно, чтобы он не выводился на экран, но изменял значение в stencil - буфере. Как это сделать?
Цитата:
Originally posted by gutierrez
Вопрос по OpenGL.
Как сделать так, чтобы объект не отрисовывался в буфер кадра (для операции с буфером трафарета)?
Если перед рисованием объекта, который не должен быть в результате виден поставить glColorMask(0,0,0,0); - объект будет ннарисован, но черным цветом.
Нужно, чтобы он не выводился на экран, но изменял значение в stencil - буфере. Как это сделать?
Вопрос по OpenGL.
Как сделать так, чтобы объект не отрисовывался в буфер кадра (для операции с буфером трафарета)?
Если перед рисованием объекта, который не должен быть в результате виден поставить glColorMask(0,0,0,0); - объект будет ннарисован, но черным цветом.
Нужно, чтобы он не выводился на экран, но изменял значение в stencil - буфере. Как это сделать?
Есть такая функция glDrawBuffer. Она задаёт буферы цвета для графического вывода. Передав параметр GL_NONE можно отключить запись. Другие параметры (GL_FORNT_LEFT, GL_FORNT_RIGHT и другие) включают запись в соответствующие буферы. Предполагается, что для режима двойной буферизации существуют буферы GL_FRONT_LEFT и GL_BACK_LEFT. Если режим двойной буферизации не включён, то существует буфер GL_FRONT_LEFT.
Ещё один способ - установить функцию альфа-теста так, чтобы фрагмент никогда не проходил. Это делается вызовами:
glAlphaFunc( GL_NEVER );
glEnable( GL_ALPHA_TEST );
IMHO не катит ни то, ни другое... Во-первых, стенсил прикреплен к буферам цвета, у FRONT и BACK он у каждого свой и если ты их отключишь то и стенсилы их отключатся. А если фрагмент не пройдет по альфа-тесту, то он и в стенсил не попадет... попробуй glEnable(GL_BLEND); glColor4f(1,1,1,0);, может сработает.