Как создать конструктивную твердую геометрию в OpenGL / C ++
Вопрос
Я хочу трафарет некоторых объектов с OpenGL.
glClear(GL_STENCIL_BUFFER_BIT);
glColorMask(false, false, false, false);
glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_EQUAL, 0, 1);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
glDisable(GL_DEPTH_TEST);
glColor4f(0,0,1,1.0f);
gl::draw(mVBO); //a sphere
glEnable(GL_DEPTH_TEST);
glColorMask(true, true, true, true);
glStencilFunc(GL_ALWAYS,0, 1);
glStencilOp(GL_REPLACE,GL_KEEP, GL_ZERO);
mTexture.enableAndBind();
gl::drawCube(Vec3f(0,3,0),Vec3f(13,13,13) );
glDisable(GL_STENCIL_TEST)
.
Я пробовал так много часов, чтобы добиться простого булевой операции, но я не понимаю.
Я хочу что-то вроде этого:
Решение
Я бы порекомендовал против восстановления колесо .
Другие советы
Трафареный буфер OpenGL работает на 2-мерную пиксельную сетку буфера рамы.Сам OpenGL не имеет понятия объектов или сцены.Это просто очки рисования, линии и треугольники.Таким образом, настоящий CSG невозможен только с OpenGL.Однако есть методы, которые эмулируют CSG с буфером трафарета, но они довольно сложны.Google для «OpenGL CSG в буфере трафарета» найти некоторые документы с середины 1990-х годов на эту тему.
Попробуйте sgcore library - http://www.geometros.com/sgcore/review.htm Очень надежная и мощная библиотека