2014-10-25 1 views
0

나는 삼각형을 그립니다 {(0,0), (1,0), (0,1)}. 이제 나는 두 번째 그림을 그리기를 원합니다. 그러나 어떤 이유로 삼각형이 그려지지 않습니다. 예를 들어 삼각형 : {(1.5654, 1.2), (1.1, 1.4564), (1.5, 1.15)}이 그려 지지만 삼각형 {(1,1), (1,0), (0, 1)}은 표시되지 않습니다. 그려야 할 코드를 들어보세요 :오픈 GL은 일부 삼각형을 그릴 수 없습니다

glBegin(GL_TRIANGLES); 
    invers_sh.setAttributeValue(b_colorLoc, colors[0]); 
    glVertex2d(1.5654, 1.2); 

    invers_sh.setAttributeValue(b_colorLoc, colors[1]); 
    glVertex2d(1.1, 1.4564); 

    invers_sh.setAttributeValue(b_colorLoc, colors[2]); 
    glVertex2d(1.5, 1.15); 
glEnd(); 

첫 번째 삼각형의 경우 동일한 코드 (좌표는 다릅니다)를 들어보십시오. 나는 두 그림을 하나로 결합하려고 노력했다. (하나의 glBegin/glEnd에서) - 같은 결과. 내가 뭘 잘못 했니?

답변

1

정면 설정에 따라 모든 정점을 시계 방향 또는 반 시계 방향으로 그릴 필요가 있습니다. 자세한 내용은 google을 참조하십시오.

+1

이것은 후면 컬링이 활성화 된 경우에만 해당됩니다. 기본적으로 사용 중지되어 있습니다. –

0

다른 답변에서 지적한 것처럼 모든 삼각형에 대한 정점을 시계 반대 방향 또는 시계 반대 방향 (OpenGL 기본값)으로 같은 순서로 그릴 필요가 있습니다. 주문을 수정하려면 처음과 마지막 정점을 교체하십시오.

glCullFace, glFrontFaceGL_CULL_FACE 인 glEnable/glDisable과 같은 OpenGL 명령을 사용하여이 동작 (FaceCulling)을 제어 할 수 있습니다.

관련 문제