2013-02-20 4 views

답변

25

LibGDX는 렌더링을위한 API가 대부분 (직각) 있습니다. 나는 아직도 그들 중 많은 사람들의 길을 배우고 있지만, 나는 다른 부분에 대한 개요를 줄 수있다.

ShapeRenderer을 사용하면 기본 색상의 다각형과 선을 화면에 쉽고 빠르게 넣을 수 있습니다. 그다지 효율적이지 않습니다 (각 렌더링에 많은 정점 데이터를 업로드합니다). 그러나가는 것은 매우 빠를 수 있습니다. 그것은 화면에 강하게 배향되었습니다 (기본적으로 전체 화면의 정사영 프로젝트로 기본 설정되며 단위는 일반적으로 픽셀입니다).

클래스를 사용하면 지오메트리를보다 직접적으로 제어 할 수 있지만 색상을 플로팅으로 인코딩하고 같은 플로트 배열에 모든 정점 데이터, 색상 데이터 및 텍스처 데이터를 저장하는 등의 세부 정보가 더 많이 표시됩니다 , 인덱스 배열의 개념).

SpriteBatch은 "스프라이트"(일반적으로 텍스처가있는 직사각형 영역)를 중심으로 배치됩니다. 이것은 메시로 텍스처를 만드는 복잡성 (그리고 유연성)을 숨 깁니다.

Box2D는 물리 모델링 용이며 사용자가 언급 한 다른 API 부분 (대부분 렌더링과 관련 있음)과 다릅니다.

마지막으로 Scene2D은 버튼, 목록 및 슬라이더와 같은 애니메이션 사용자 인터페이스 요소를 주로 만듭니다. 그러나 충분히 강력하고 (애니메이션과 상호 작용 이벤트에 대한 깔끔하고 유연한 지원을 제공합니다), 여러분은 꽤 많은 "게임"을 구현할 수 있습니다.

원시 "OpenGL"명령 (GL20 참조)도 사용할 수 있습니다.

당신은 완전히 (하나주의해야 할 점은 당신이 일반적으로 "플러시"및 ShapeRenderer/SpriteBatch/Mesh 다른 맛을 시작하기 전에 렌더링 어떤 "종료"해야한다는 것입니다)이 다른 프리미티브에 맞게 믹스 앤 수 있습니다. 따라서 예를 들어 게임의 "메인 메뉴"와 일부 메타 액션에 Scene2D를 사용하고 게임의 핵심을 렌더링하기 위해 SpriteBatch을 사용하고 ShapeRenderer을 사용하여 디버그 오버레이를 생성 할 수 있습니다 (테두리 상자 시각화 등).

대부분의 libGDX는 2D를 대상으로합니다. OpenGLMesh API는 3D 개체를 작성하는 데에도 사용할 수 있습니다.

gdx-invaders example을 확인하여 Mesh, OpenGL 및 SpriteBatch을 어떻게 사용하는지 확인하십시오. (나는이 예가 Scene2d에 선행한다고 생각한다. 그래서 그 중 하나도 없다 ...). 또한이 클래스의 구현을 살펴봄으로써 그들이 커버 밑에서 무엇을하는지 볼 수 있습니다.

+0

흠, 고마워요. 이제 나는 그 차이를 보았다. 마지막 질문 하나만 : 충돌 탐지를 위해 더 나은 점은 무엇입니까? Box2D, 교차점 또는 다른 모르는 항목이 있습니까? –

+1

'Intersector'에는 스스로 충돌 감지를 수행하는 데 필요한 모든 도구가 있습니다. Box2D는 충돌 감지를 수행하지만 완벽한 2D 물리 시뮬레이션이므로 많은 작업을 수행합니다. 총알이 적 (또는 바닥에있는 플레이어)과 교차하는 경우, 자신 만의 롤링을하는 것이 좋습니다. –

+0

@ P.T.이 숫자가 작지 않을 때 N 개의 총알과 M 개의 적 사이의 충돌을 지속적으로 확인해야 할 때 자신의 롤링이 쉽지 않을 수 있습니다 ... 그리고 바닥과 벽이있는 플레이어의 움직임을 적절히 차단하는 것도 옳은 일을하기가 쉽지 않습니다. –