Как создать конструктивную твердую геометрию в OpenGL / C ++

StackOverflow https://stackoverflow.com//questions/9623510

  •  09-12-2019
  •  | 
  •  

Вопрос

Я хочу трафарет некоторых объектов с 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)
.

Я пробовал так много часов, чтобы добиться простого булевой операции, но я не понимаю.

Я хочу что-то вроде этого:

 img

Это было полезно?

Решение

Я бы порекомендовал против восстановления колесо .

Другие советы

Трафареный буфер OpenGL работает на 2-мерную пиксельную сетку буфера рамы.Сам OpenGL не имеет понятия объектов или сцены.Это просто очки рисования, линии и треугольники.Таким образом, настоящий CSG невозможен только с OpenGL.Однако есть методы, которые эмулируют CSG с буфером трафарета, но они довольно сложны.Google для «OpenGL CSG в буфере трафарета» найти некоторые документы с середины 1990-х годов на эту тему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top