수색…


뷰포트

여러 해상도와 종횡비를 지원하기 위해 Libgx는 소위 Viewports 사용합니다.
여러 가지 해상도와 종횡비를 처리하기 위해 다양한 전략을 사용하는 몇 가지 유형의 Viewports 가 있습니다.
ViewportCamera 사용하여 viewportHeightviewportWidth 관리합니다. 선택적으로 제공 할 수 있습니다 Viewport Camera , 그렇지 않으면 그것이 사용, 그것의 생성자에서 OrthographicCamera 기본적으로 :

private Viewport viewport;
private Camera camera;

public void create() {
   camera = new PerspectiveCamera();
   viewport = new FitViewport(8f, 4.8f, camera);
}  

또한, worldWidthworldHeight 를 뷰포트의 생성자에 지정해야합니다. 이 공간은 그려지는 객체의 위치와 크기를 지정하는 데 사용할 가상 좌표계를 나타냅니다. 예를 들어, SpriteBatch에 적용 할 수있는 뷰포트 변환은 사용중인 실제 뷰포트 유형을 따르는 방식으로 논리 좌표를 실제 화면 좌표로 자동 변환합니다. 예를 들어 직교 투영법 ( OrthographicCamera , 기본값) : 세계 크기가 12.8 x 7.8 미터이고 장치 화면이 2560x1560 픽셀 인 경우 세계는 미터 당 200 픽셀로 동적으로 투영됩니다.

Viewport 의 크기가 변경되면 (예 : 스마트 폰의 화면 방향이 변경되는 경우) 해당 변경 사항에 대해 Viewport 에 알릴 필요가 있습니다. 그러면 CameraviewportHeightviewportWidth 자동으로 업데이트됩니다.

public void resize(int width, int height) {
    viewport.update(width, height);
}

Viewport 는 또한 OpenGL Viewport 관리하고 필요에 따라 드로어 블 영역을 수정합니다.

Viewport 는 또한 화면 좌표를 게임 좌표로 변환하는 데 특히주의를 기울입니다.이 좌표는 특히 따기에 필요합니다.

private Vector2 worldPos = new Vector2();
public boolean touchDown (int x, int y, int pointer, int button) {
    worldPos.set(x, y);
    viewport.unproject(worldPos);
    processPicking(worldPos);
}

내장 뷰포트

각기 다른 일을하는 두 개의 내장 뷰포트가 있습니다. 다음은 이름 목록과 설명입니다.

뷰포트 이름 기술
StretchViewport 화면이 늘어납니다. 검정색 막대는 없지만 가로 세로 비율은 꺼져있을 수 있습니다.
FitViewport 종횡비에 따라 크기를 최대화합니다. 검은 색 막대가있을 수 있습니다.
FillViewport FitVieport와 완전히 같지만 항상 전체 화면을 채 웁니다.
ScreenViewport 항상 전체 화면을 채우지 만 어린이의 크기는 조정하지 않습니다.
확장 된 뷰포트 세상을 한 방향으로 확장하여 검은 색 바가없는 세계 종횡비 유지
CustomViewport 사용자 정의 프로그래밍 된 뷰포트. 검정색 막대가있을 수 있으며 가로 세로 비율을 유지할 수 있습니다.

사용자 정의 뷰포트

고유 한 사용자 정의 뷰포트를 만들 수 있습니다. 검은 색 막대가있을 수 있으며, 프로그램 방법에 따라 가로 세로 비율이 유지 될 수도 있고 유지되지 않을 수도 있습니다. 커스텀 뷰포트는 다음과 같이 보입니다 :
public class Tutorial extends Viewport 합니다. update(width, height) 를 재정의해야하지만 그게 전부입니다.

또 다른 시도는 일반 ScalingViewport 를 확장하고 아직 제공되지 않은 다른 Scaling을 제공하는 것입니다. Scaling.none 설정했다고 가정합니다. 그러면 다음과 같이 보일 것입니다. 이미지 예제 참조가 필요하면 여기에 내장 된 뷰포트 클래스를 찾을 수 있습니다 .

StretchViewport

StretchViewport 는 가상 화면 크기를 지원하는 Viewport 유형입니다.
이를 통해 고정 된 (해상도 독립적 인) 폭과 높이를 정의 할 수 있습니다.
이름에서 알 수 있듯이 StretchViewport 는 가상 종횡비가 실제 종횡비와 일치하지 않으면 가상 화면을 확장합니다. OpenGL 뷰포트는 수정되지 않으며 검정색 막대가 표시되지 않습니다.

용법:

private Viewport viewport;
private Camera camera;

public void create() {
    camera = new OrthographicCamera();
    viewport = new StretchViewport(80, 48, camera);
}

public void resize(int width, int height) {
    viewport.update(width, height);
}

FitViewport

FitViewport는 항상 종횡비를 유지하는 뷰포트입니다. 공간이 남아있는 가장자리에 검정색 막대를 만들어이 작업을 수행합니다. 이것은 가장 보편적으로 사용되는 뷰포트 중 하나입니다.

용법:

private Viewport viewport;
private Camera camera;

public void create() {
    camera = new OrthographicCamera();
    viewport = new FitViewport(80, 48, camera);
}

public void resize(int width, int height) {
    viewport.update(width, height);
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow