버그 해결을 위한 모든 질문을 던져
0 votes
51 views

2개의 concave polygon을 그리려고 하는데 하나는 negative object이고 다른 하나는 positive object입니다.

            

        1. line으로 그렸을 때                          2. 예상 이미지                                   3. 실제 이미지

 

다음과 같이 2개의 concave polygon을 겹쳐서 그렸을 때 2번처럼 나올거라고 예상을 하였는데 실제 drawing을 

한 결과 3번과 같은 이미지가 나왔습니다.

코드는 다음과 같습니다.

 

// 1. negative concave polygon 그리는 코드 

glEnable(GL_STENCIL_TEST);

glStencilFunc(GL_NEVER, 0, 1);

glStencilOp(GL_ZERO, GL_KEEP, GL_KEEP);

double aPos[] = {
            100.0f, 50.0f, 
            100.0f, 450.0f,
            500.0f, 450.0f, 
            500.0f, 150.0f, 
            150.0f, 150.0f, 
            200.0f, 50.0f, 
            100.0f, 50.0f
        };

glDrawArray(GL_POLYGON, 0, 7);

glStencilFunc(GL_NEVER, 1, 1);

glStencilOp(GL_INVERT, GL_KEEP, GL_KEEP);

glDrawArray(GL_POLYGON, 0, 7);

glDisable(GL_STENCIL_TEST);

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

// 2. positive concave polygon 그리는 코드

glEnable(GL_STENCIL_TEST);

glStencilFunc(GL_NEVER, 0, 1);

glStencilOp(GL_INVERT, GL_KEEP, GL_KEEP);

double aPos[] = {
            0.0f, 0.0f,
            100.0f, 0.0f,
            200.0f, 200.0f,
            300.0f, 0.0f,
            600.0f, 0.0f,
            600.0f, 600.0f,
            500.0f, 600.0f,
            400.0f, 500.0f,
            300.0f, 600.0f,
            0.0f, 600.0f,
            0.0f, 0.0f
        };

glDrawArray(GL_POLYGON, 0, 11);

glStencilFunc(GL_EQUAL, 1, 1);

glStencilOp(GL_ZERO, GL_ZERO, GL_ZERO);

glDrawArray(GL_POLYGON, 0, 11);

glDisable(GL_STENCIL_TEST);

 

위와 같이 stencil buffer를 설정해주었는데 어떻게 해야 stencil buffer를 설정하면 2번 예상이미지와 같이 그려지나요?ㅠㅠㅠ알려주세요...

 

asked (2 point)
수정됨 , 51 views

질문에 대한 답변을 하려면 로그인 또는 가입해야합니다.

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

533 질문
687 answers
674 댓글
118,202 users