libgdx
다중 해상도 지원
수색…
뷰포트
여러 해상도와 종횡비를 지원하기 위해 Libgx는 소위 Viewports
사용합니다.
여러 가지 해상도와 종횡비를 처리하기 위해 다양한 전략을 사용하는 몇 가지 유형의 Viewports
가 있습니다.
Viewport
는 Camera
사용하여 viewportHeight
및 viewportWidth
관리합니다. 선택적으로 제공 할 수 있습니다 Viewport
Camera
, 그렇지 않으면 그것이 사용, 그것의 생성자에서 OrthographicCamera
기본적으로 :
private Viewport viewport;
private Camera camera;
public void create() {
camera = new PerspectiveCamera();
viewport = new FitViewport(8f, 4.8f, camera);
}
또한, worldWidth
및 worldHeight
를 뷰포트의 생성자에 지정해야합니다. 이 공간은 그려지는 객체의 위치와 크기를 지정하는 데 사용할 가상 좌표계를 나타냅니다. 예를 들어, SpriteBatch에 적용 할 수있는 뷰포트 변환은 사용중인 실제 뷰포트 유형을 따르는 방식으로 논리 좌표를 실제 화면 좌표로 자동 변환합니다. 예를 들어 직교 투영법 ( OrthographicCamera
, 기본값) : 세계 크기가 12.8 x 7.8 미터이고 장치 화면이 2560x1560 픽셀 인 경우 세계는 미터 당 200 픽셀로 동적으로 투영됩니다.
Viewport
의 크기가 변경되면 (예 : 스마트 폰의 화면 방향이 변경되는 경우) 해당 변경 사항에 대해 Viewport
에 알릴 필요가 있습니다. 그러면 Camera
의 viewportHeight
및 viewportWidth
자동으로 업데이트됩니다.
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);
}