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를 에뮬레이션하는 기술이 있지만 매우 복잡합니다.1990 년 중반의 일부 논문을 찾기 위해 "스텐실 버퍼에서 OpenGL CSG"에 대한 Google이 주제에있는 IES의 일부 논문을 찾습니다.
SGCORE 라이브러리 - http://www.geometros.com/sgcore/review.htm 매우 강력하고 강력한 도서관
제휴하지 않습니다 StackOverflow