2013-07-08 5 views
1

저는 Java를 사용하여 2D 등각 투영 엔진의 시작을 작성했습니다. 맵에서 주문 및 객체 깊이 정렬과 같은 대부분의 기본 사항을 다루었습니다. 그러나, 난 정말 내 방법을 지저분하게하지 않으면 해결할 수없는 문제가 발생했습니다.등각 투영 정렬

문제는 내 등척성 세계에서 객체베이스가있는 타일이 화면에 렌더링 될 때 각 객체가 렌더링된다는 것입니다. 그러나 일부 객체는 렌더링되지 않은 오프 스크린 영역에서 렌더링 된 화면 영역으로 확장 될 수있는 큰 높이 (예 : 건물)를 가지고 있으며 지금까지는 내 엔진이 객체 기반에 의존하므로이를 감지 할 수있는 방법이 없습니다. 현재 이미지를 렌더링합니다.

제 질문은 높이 값이 큰 객체가 렌더링 된 영역에 있어야하며 기본은 오프 스크린 영역에 있어야한다는 것입니다. 정말 CPU 사용량이 많은 전체 맵 (오프 스크린 영역 포함) 렌더링을 원하지 않기 때문에이 문제 영역을 탐지 할 수있는 알고리즘이나 메소드를 찾고 있습니다.

편집 : 질문을 업데이트하여 아래 문제를 시각적으로 나타냅니다.

How do I discover when the object's height extends into the renderable area?

답변

2

'타일'에 대한 개념을 '봉투'와 같은 것으로 수정할 수 있습니까? 최대 높이와 ​​너비를 한정하는 직사각형? 예 : '큰 높이'객체가 타일에 생성/할당 될 때 엔벨로프 높이를 늘릴 수 있습니다. 그러면 봉투가 화면과 겹치는 타일 만 렌더링하면됩니다.

+0

그러면 모든 객체를 검사하여 렌더 루프가 실행될 때마다 너비 또는 높이가 화면 영역과 겹치지 않는지 확인해야합니다. – Kavan

+0

모든 것을 렌더링하는 것보다 비용이 저렴합니다.이 계산과 같은 것이 원하는 것을 얻기 위해 필요합니다. –

+0

예를 들어 미리 계산할 수 있습니다. 무언가가 타일에 추가 될 때/타일이 이동 될 때. 근본적으로 어떤 타일이 화면에 퍼져 있는지 알아 내려면 이처럼 뭔가를해야합니다. –

0

내 개체 "부울에서 IsVisible (Rectangle2D를 경계)"의 방법을 것이다. 객체를 소트하기 전에, 소트 된 객체를 렌더링하기 전에이 메소드를 호출합니다.

+0

내 개체는 정렬되지 않고 렌더링 루프에 의해 올바른 순서로 그려 지므로 심도 정렬 방법이 필요하지 않으므로 개체 렌더링 전에 가시성을 설정할 수 없습니다. – Kavan

관련 문제