문제

PC와 Android에서 모두 작동하는 Java 3D 게임을 작성할 계획입니다. 불행히도 두 플랫폼 모두에 공통 OpenGL API가없는 것 같습니다.

API가 크게 다릅니 까? 두 버전 모두에서 동일한 3D 코드를 사용할 수있는 방법이 있습니까? 좋은 생각인가요?

도움이 되었습니까?

해결책

Android는 OpenGL ES 1.0을 지원하는 OpenGL 1.3과 겹치는 OpenGL ES 1.0을 지원하므로 가능해야하지만 런타임에 JAR 파일을 교체하는 것은 간단하지 않습니다.

두 플랫폼에서 최대한 많이 재사용하려고 시도하는 것이 좋습니다. 어쨌든 OpenGL ES 지원이 필요하지 않더라도 나머지 코드를 외부 종속성에서 나머지 코드를 격리하는 것이 일반적입니다. 당신은 당신이 당신의 응용 프로그램을 앞으로 어떤 API/플랫폼을 포팅하고 싶은지 결코 알지 못합니다.

사용 가능한 두 가지 옵션이 있습니다.

첫 번째는 응용 프로그램의 나머지 부분이 사용하는 인터페이스 뒤에 OpenGL 구현을 숨기고 별도의 Jogl 및 Androide 구현을 제공하는 것입니다. 실행중인 플랫폼에 따라 공장 패턴을 사용하여 런타임에 올바른 구현을 시작하도록 선택할 수 있습니다.

OpenGl es와 OpenGL이 매우 유사하기 때문에이를 유지하는 데 필요한 노력은 너무 높아서 공통 기능을 고수하지 않아야합니다.

다른 옵션은 프로파일을 지원하는 Jogl2를 사용하는 것입니다. 이것들은 당신이 필요한 것을 정확하게 제공하는 것처럼 보이지만 Jogl2는 여전히 베타 버전입니다.

이 페이지 하단은 프로파일에 대해 조금 이야기합니다. http://kenai.com/projects/jogl/pages/faq

프로파일을 사용하면 Java 응용 프로그램을 여러 개의 OpenGL 버전과 동시에 호환 할 수있는 방식으로 작성할 수 있습니다. OpenGL ES (내장 시스템 용 GL)는 OpenGL 자체와 겹치는 기능을 갖추고 있으므로 데스크탑과 내장 된 구현 프로파일을 추가 할 수있는 기회를 열었습니다.

이것을 읽고 싶을 수도 있습니다 http://michael-bien.com/mbien/entry/jogl_2_opengl_profiles_explained 프로필에 대한 자세한 내용은

다른 팁

프로젝트가 완료되었습니다. API는 다소 다르지만 기능적으로는 공유 부분이 있습니다. 우리는 Jogl 코드를 ES 버전으로 변환하는 간단한 사전 처리기를 작성하고 Eclipse로 변환을 자동화했습니다.

실제로 Java3D와 Android OpenGL API 사이에는 상당한 차이가 있습니다. 첫 번째 JAVA3D는 3D에서 더 높은 수준의 추상화입니다. 조글과 같은 것을 사용하더라도 API에는 약간의 차이가있을 것입니다. 가장 좋은 방법은 코드베이스에서 실제로 3D 도면 구현을 추상화하는 것입니다. 나머지 논리를 공유 할 수 있지만 OpenGL/3D 도면을 처리하기위한 플랫폼 별 코드가 있습니다.

몇 년 전 Jogl-ES가 Jogl 2.X에 합병되었으므로 이제 Desktop 및 Mobile Environments (Android)에서 Jogl을 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top