Как создать конструктивную твердую геометрию в OpenGL / C ++ - PullRequest
2 голосов
/ 08 марта 2012

Я хочу отрисовать некоторые объекты с помощью 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

Ответы [ 3 ]

2 голосов
/ 08 марта 2012

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

1 голос
/ 08 марта 2012

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

0 голосов
/ 24 июля 2012

Попробуйте библиотеку sgCore - http://www.geometros.com/sgcore/review.htm Очень надежная и мощная библиотека

...