2012-07-18 4 views
2

WebGL에는 전체 표면을 지우는 clear 메서드가 있습니다. 표면의 특정 직사각형을 지우는 가장 좋은 방법은 무엇입니까? 예를 들어 (50, 50)에서 시작하는 100x100 픽셀 상자를 모두 0으로 설정하려고합니다 (ARGB 0, 0, 0, 0). 지금 생각할 수있는 것은 제로를 쓰는 프래그먼트 쉐이더로 쿼드를 그리는 것입니다. 쉬운 방법이 있습니까?WebGL에서 사각형 영역을 지우는 방법은 무엇입니까?

답변

11

SCISSOR 테스트를 사용하여 지우기 (및 일반적으로 렌더링)를 구형으로 제한 할 수 있습니다.

+0

위대한 아이디어, 감사합니다! – AshleysBrain

+0

나는 three.js로 놀고 있는데 뷰포트 영역과 가위 영역의 차이점을 이해하지 못합니다. 내 말은, 더 많은 뷰포트를 설치하려면 가위 영역을 설정하고 가위 테스트를 활성화해야한다는 것입니다. 이걸 설명 할 수 있니? :) – optimusfrenk

+0

viewport 명령은 2 가지를 설정합니다. 좌표 값을 클리핑하고 좌표 값을 곱하여 클리프 스에서 픽셀 값으로 변환합니다. 참고 그들은 픽셀을 클립한다고 말하지 않았다. 뷰포트를 100,100,1,1 (1 픽셀 뷰포트)로 설정하고 점 설정 'gl_PointSize'를 10으로 그리면 여전히 뷰포트 외부에 10 픽셀 포인트를 그립니다. 뷰포트 설정은 정점 만 클립하기 때문입니다. 가위 다른 손 클립 픽셀. – gman

1

webgl 컨텍스트 내에서 그려지는 것이 있으면, 가위 외부의 모든 것이 잘리고 전혀 그려지지 않을 것입니다!

관련 문제