2011-07-28 2 views
0

클리핑 :OpenGL을 직교 투영이 나는 모양 변경 기능과 같은 Orhographic 프로젝션을 사용하고있는 가정

void reshape(f32 width, f32 height){ 
    aspect = width/height; 
    glViewport(0, 0, width, height); 
    // guaranted 960x640 HUD canvas 
    if(640*aspect>=960){ 
     ortho.x = 640*aspect; 
     ortho.y = 640; 
    }else{ 
     ortho.x = 960; 
     ortho.y = 960/aspect; 
    } 
    glOrtho(0, ortho.x, ortho.y, 0, -1.0f, 1.0f); 
} 

가 어떻게, 확인 할 수있는 모든 정점> ortho.x 또는> ortho.y (일반적으로 오프 스크린) 그려지지 않았 니? 왜냐하면 1.5f (960/640)보다 큰 종횡비로 창 크기를 조절하면 객체가 보이기 때문에 뷰포트가 창처럼 큽니다. 직교 투영에 클리핑 창과 같은 것이 있습니까? glOrtho 한계 파라미터

답변

1

[glScissor][1]을 사용하면 렌더링 된 영역이 특정 크기를 초과하지 않도록 할 수 있습니다. glScissor은 창 좌표에서 직사각형을 사용합니다 (창 좌표의 원점은 왼쪽 하단에 있음). 가위 테스트는이 영역 밖의 조각 생성을 방지합니다.

가위 테스트를 활성화하려면 glEnable(GL_SCISSOR)을 사용해야합니다. 그렇게하지 않으면 위의 호출은 실제로 아무 것도하지 않습니다.

1

상수 값을 사용하지만,이 창문의 하위 부분에 렌더링 제한하는 glViewportglScissor을 (glEnable(GL_SCISSOR_TEST)으로 가능)을 사용.

BTW : 렌더링 기능에서 투영 및 뷰포트를 설정해야합니다. 모양 변경 처리기에서 처리하는 것은별로 의미가 없습니다. 심각한 OpenGL 응용 프로그램에서는 전체 렌더링 중에 프로젝션 모드를 여러 번 전환하기 때문에 처음부터 그렇게 할 수 있습니다.