2014-10-12 1 views
0

패키지 org.lwjgl.opengl에는 GL11에서 GL44까지의 패키지 전체가 포함되어 있습니다.이 패키지는 OpenGL 1.1에서 OpenGL 4.4까지 모든 버전에 하나씩 있습니다.GLxx packages in org.lwjgl.opengl

정확히 무엇을 의미합니까? 이 패키지들 각각은 OpenGL의 별도의 유효한 버전을 포함합니까, 아니면 각 패키지에 해당 버전에 도입 된 항목들만 포함되어 있습니까? 어떤 것들이 어디에 있는지를 어떻게 알 수 있습니까?

답변

1

확실히 각 클래스에는 새로 추가 된 값/메소드 만 들어있는 것처럼 보입니다. 예를 들어, GL44 class에는 OpenGL 4.4에 추가 된 새로운 기능과 일치하는 엔트리 포인트 세트 만 포함됩니다.

  • 기존의 인터페이스가 수정되지 않습니다 : 각 버전의 새로운 인터페이스를 추가

    는 장점을 가지고있다. 인터페이스가 공개 된 후에는 인터페이스를 수정하지 않는 것이 가장 바람직합니다. 동일한 인터페이스의 다양한 버전을 사용하는 것은 문제가 될 수 있습니다.

  • 프로그래머는 특정 OpenGL 버전을 쉽게 타겟팅 할 수 있습니다. 클래스 이름을 기반으로 각 진입 점이 지원되는 버전을 알 수 있기 때문입니다.

단점은 각 호출이 도입 된 버전을 알아야 (또는 조회하여) 호출에 사용할 클래스를 알 수 있다는 것입니다.

나는 클래스들 사이에서 상속 계층 구조를 설정하지 않았다는 것에 놀랐다. 두 세계의 장점을 모두 제공하는 것으로 보입니다.

  • 새 버전이 도입되면 기존 클래스 인터페이스가 수정되지 않습니다.
  • 프로그래머가 해당 클래스를 사용하여 특정 최대 버전을 쉽게 타겟팅 할 수 있습니다.
  • 프로그래머가 통화가 도입 된 특정 버전을 해당 대상 버전에 포함되어있는 한 고려할 필요가 없습니다.

이것은 각 버전이 하위 클래스 관계와 일치하는 이전 버전의 확장이기 때문에 개념적으로도 의미가 있습니다. Android에서 OpenGL ES Java 바인딩은이 방법을 사용합니다. 은 GLES20에서 파생됩니다. 따라서 ES 3.0을 타겟팅하는 경우 GLES30에있는 모든 진입 점을 호출 할 수 있으며 이미 ES 2.0에 있었던 항목까지도 호출 할 수 있습니다.

관련 문제