문제

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를 에뮬레이션하는 기술이 있지만 매우 복잡합니다.1990 년 중반의 일부 논문을 찾기 위해 "스텐실 버퍼에서 OpenGL CSG"에 대한 Google이 주제에있는 IES의 일부 논문을 찾습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top