JOGL-기본 템플릿 용 API
JOGL 프로그래밍을 이용하면 직선, 삼각형, 회전, 조명, 색상 등의 특수 효과를 포함한 3D 도형 등 다양한 그래픽 도형을 그릴 수 있습니다. JOGL에서 객체를 그리기 위해서는 먼저 기본적인 JOGL 프레임을 구성해야합니다. . 다음은 기본 프레임을 구성하는 데 필요한 클래스입니다.
GLEventListener 인터페이스
프로그램이 JOGL 그래픽 API를 사용할 수 있도록하려면 다음을 구현해야합니다. GLEventListener상호 작용. 당신은 찾을 수 있습니다GLEventListener 인터페이스 javax.media.opengl 꾸러미.
다음 표는 다양한 방법에 대한 세부 정보와 GLEventListener 인터페이스-
Sr. 아니. | 방법 및 설명 |
---|---|
1 | Void display(GLAutoDrawable drawable) 클라이언트가 OpenGL 렌더링을 시작하기 위해 GLAutoDrawable 인터페이스의 객체에 의해 호출됩니다. 즉,이 메소드는 OpenGL API를 사용하여 그래픽 요소를 그리는 데 사용되는 로직을 포함합니다. |
2 | Void dispose(GLAutoDrawable drawable) 이 메소드는 리스너에게 메모리 버퍼 및 GLSL 프로그램과 같은 각 GLContext 당 모든 OpenGL 리소스의 해제를 수행하도록 신호를 보냅니다. |
삼 | Void init(GLAutoDrawble drawable) OpenGL 컨텍스트가 초기화 된 직후 GLAutoDrawable 인터페이스의 객체에 의해 호출됩니다. |
4 | Void reshape(GLAutoDrawble drawble, int x, int y, int width, int height) 구성 요소의 크기가 조정 된 후 처음으로 다시 그리는 동안 GLAutoDrawable 인터페이스의 개체에 의해 호출됩니다. 창에서 구성 요소의 위치가 변경 될 때마다 호출됩니다. |
모든 방법 GLEventListener 목적을 요구하다 GLAutoDrawable 매개 변수로 인터페이스.
GLAutoDrawable 인터페이스
이 인터페이스는 이벤트 기반 메커니즘을 제공합니다. (GLEventListener) OpenGL 렌더링을 수행합니다. GLAutoDrawable 다음과 관련된 기본 렌더링 컨텍스트를 자동으로 만듭니다. GLAutoDrawable 개체의 수명 동안.
다음 표는 다양한 방법에 대한 세부 정보와 GLAutoDrawable 인터페이스-
Sr. 아니요 | 방법 및 설명 |
---|---|
1 | GL getGL() GLAutoDrawable 인터페이스의 현재 개체가 사용하는 GL 파이프 라인 개체를 반환합니다. |
2 | void addGLEventListener(GLEventListener Listener) 현재 드로어 블 큐의 끝에 지정된 리스너를 추가합니다. |
삼 | void addGLEventListener(int index, GLEventListener listener) 이 드로어 블 큐의 지정된 인덱스에 지정된 리스너를 추가합니다. |
4 | void destroy() Destroys GLContext를 포함하여 GLAutoDrawable 인터페이스의이 객체와 관련된 모든 리소스. |
Note−이 패키지에는 다른 방법이 있습니다. 이 인터페이스에서는 템플릿과 관련된 몇 가지 중요한 방법 만 설명합니다.
GLCanvas 클래스
GLCanvas 과 GLJpanel 구현하는 JOGL GUI의 두 가지 주요 클래스입니다. GLAutoDrawable OpenGL 명령을위한 그리기 표면으로 활용 될 수있는 인터페이스.
GLCanvas는 OpenGL 렌더링 지원을 제공하는 무거운 AWT 구성 요소입니다. 이것은의 주요 구현입니다AWTAutoGLDrawable상호 작용. 또한 상속java.awt.Canvas수업. 무거운 부품이기 때문에 어떤 경우에는GLJCanvas스윙 구성 요소와 올바르게 통합되지 않을 수 있습니다. 따라서 Swing과 함께 사용시주의가 필요합니다. 문제에 직면 할 때마다GLJCanvas, 다음을 사용해야합니다. GLJPanel 수업.
클래스의 계층 적 다이어그램 GLCanvas 아래와 같이 될 수 있습니다-
GLEventistener 인터페이스와 함께 작동 GLCanvas수업. 그것은 변화에 반응합니다GLCanvas 수업과 그들에 의해 만들어진 도면 요청에.
할때는 언제나 GLCanvas 클래스가 인스턴스화되면 init() 의 방법 GLEventListener호출됩니다. 이 메서드를 재정 의하여 OpenGL 상태를 초기화 할 수 있습니다.
할때는 언제나 GLCanvas 처음에 그려 지거나 (인스턴스화 됨) 크기가 조정되면 reshape() 의 방법 GLEventListener실행됩니다. OpenGL 뷰포트 및 투영 매트릭스를 초기화하는 데 사용됩니다. 구성 요소의 위치가 변경 될 때마다 호출됩니다.
display () 메서드 GLEventListener3D 장면을 렌더링하기위한 코드를 포함합니다. display () 메소드가 다음과 같이 호출 될 때마다 호출됩니다.GLCanvas 호출됩니다.
다음은 GLCanvas 클래스를 인스턴스화하는 데 필요한 생성자입니다.
Sr. 아니요 | 생성자 및 설명 |
---|---|
1 | GLCanvas() 기본 화면 장치에서 기본 OpenGL 기능 선택 메커니즘을 사용하여 기본 OpenGL 기능 집합으로 새 GLCanvas 구성 요소를 만듭니다. |
2 | GLCanvas(GLCapabilitiesImmutable) 기본 화면 장치에서 기본 OpenGL 기능 선택 메커니즘을 사용하여 요청 된 OpenGL 기능 집합으로 새 GLCanvas 구성 요소를 만듭니다. |
다음은 GLCanvas 클래스의 이벤트 처리에 사용되는 메서드입니다.
Sr. No. | 방법 및 설명 |
---|---|
1 | void addGLEventListener(GLEventListener listener) 이 드로어 블 큐의 끝에 지정된 리스너를 추가합니다. |
2 | void addGLEventListener(int indexGLEventListener listener) 이 드로어 블 큐의 지정된 인덱스에 지정된 리스너를 추가합니다. |
인스턴스화하려면 GLCanvas 클래스, 당신은 GLCapabilitiesImmutable 변경 불가능한 OpenGL 기능 세트를 지정하는 인터페이스.
객체를 얻는 방법 중 하나 CapabilitiesImmutable 인터페이스는 인스턴스화하는 것입니다 GLCapabilities인터페이스를 구현하는 클래스. 인스턴스GLCapabilities 클래스를 사용하여 목적을 달성 할 수 있습니다.
GLCapabilities 클래스
이 클래스는 OpenGL 기능 집합을 지정합니다. GLCapabilities 객체를 매개 변수로 사용합니다. 그만큼GLCapabilities 클래스는 OpenGL 프로필과 같이 렌더링 컨텍스트가 지원해야하는 원하는 기능을 설명합니다.
아래는 GLCapabilities 클래스를 인스턴스화하는 생성자입니다.
Sr. No. | 방법 및 설명 |
---|---|
1 | GLCapabilities(GLProfile glprofile) GLCapabilities 객체를 생성합니다. |
인스턴스화하려면 GLCanvas 클래스의 경우 변경할 수없는 OpenGL 기능 집합을 지정하는 GLCapabilitiesImmutable 인터페이스의 개체가 필요합니다.
객체를 얻는 방법 중 하나 CapabilitiesImmutable 인터페이스는 인스턴스화하는 것입니다 GLCapabilities인터페이스를 구현하는 클래스. 인스턴스GLCapabilities 클래스를 사용하여 목적을 달성 할 수 있습니다.
그만큼 GLCapabilities 수업은 차례로 GLProfile 목적.
GLProfile 클래스
여러 버전의 OpenGL API가 출시 되었기 때문에; 프로그램에서 사용중인 OpenGL API의 정확한 버전을 JVM (Java Virtual Machine)에 지정해야합니다. 이것은GLProfile 수업.
그만큼 get() 이 클래스의 메서드는 미리 정의 된 다른 String매개 변수로 개체. 각 String 객체는 인터페이스의 이름이며 각 인터페이스는 특정 버전의 OpenGL을 지원합니다. 이 클래스를 static 및 singleton으로 초기화하면 singleton이 제공됩니다.GLProfile 사용 가능한 각 JOGL 프로필에 대한 개체.
아래는 GLProfile 클래스의 get 메소드 프로토 타입입니다.
Sr. 아니. | 방법 및 설명 |
---|---|
1 | Static GLProfile get(String profile) 기본 장치를 사용합니다. |
이것은 정적 메서드이므로 클래스 이름을 사용하여 호출해야하며 매개 변수로 미리 정의 된 정적 문자열 변수가 필요합니다. 이 클래스에는 12 개의 이러한 변수가 있으며 각 변수는 GL 인터페이스의 개별 구현을 나타냅니다.
GLProfile.get(GLProfile.GL2);
get () 메서드의 매개 변수
Sr. 아니요 | 사전 정의 된 문자열 값 (인터페이스 이름) 및 설명 |
---|---|
1 | GL2 이 인터페이스에는 모든 OpenGL [1.0… 3.0] 메서드와이 사양 당시 정의 된 대부분의 확장이 포함되어 있습니다. |
2 | GLES1 이 인터페이스에는 모든 OpenGL ES [1.0 ... 1.1] 메서드와이 사양 당시 정의 된 대부분의 확장이 포함되어 있습니다. |
삼 | GLES2 이 인터페이스에는 모든 OpenGL ES 2.0 메서드와이 사양 당시 정의 된 대부분의 확장이 포함되어 있습니다. |
4 | GLES3 이 인터페이스에는 모든 OpenGL ES 3.0 메소드와이 사양 당시 정의 된 대부분의 확장이 포함되어 있습니다. |
5 | GL2ES1 이 인터페이스는 GL2 및 GLES1의 공통 서브 세트를 포함합니다. |
6 | GL2ES2 이 인터페이스는 GL3, GL2 및 GLES2의 공통 서브 세트를 포함합니다. |
7 | GL2GL3 이 인터페이스에는 핵심 GL3 (OpenGL 3.1+) 및 GL2의 공통 하위 집합이 포함되어 있습니다. |
8 | GL3 이 인터페이스는 모든 OpenGL [3.1 ... 3.3] 핵심 메소드와이 사양 당시 정의 된 대부분의 확장을 포함합니다. |
9 | GL3bc 이 인터페이스에는 모든 OpenGL [3.1 ... 3.3] 호환성 메서드와이 사양 당시 정의 된 대부분의 확장이 포함되어 있습니다. |
10 | GL3ES3 이 인터페이스에는 코어 GL3 (OpenGL 3.1+) 및 GLES3 (OpenGL ES 3.0)의 공통 하위 집합이 포함되어 있습니다. |
11 | GL4 이 인터페이스에는 모든 OpenGL [4.0 ... 4.3] 핵심 메서드와이 사양 당시 정의 된 대부분의 확장이 포함되어 있습니다. |
12 | GL4bc 이 인터페이스는 모든 OpenGL은 [4.0 ... 4.3] 포함 호환성 프로파일 뿐만 아니라 본 명세서의 정의시 그 정보의 대부분을 등. |
13 | GL4ES3 핵심 GL4 (OpenGL 4.0+) 및 GLES3 (OpenGL ES 3.0)의 공통 하위 집합을 포함하는 인터페이스입니다. |
GLJPanel 클래스
OpenGL 렌더링 지원을 제공하는 경량 스윙 구성 요소입니다. Swing과의 호환성을 위해 제공됩니다.
GLJPanel 클래스 계층
아래 주어진 다이어그램은 GLJPanel 클래스의 클래스 계층 구조를 나타냅니다.
다음은 다양한 생성자 GLJPanel 클래스입니다.
Sr. No. | 생성자 및 설명 |
---|---|
1 | GJPanel() 기본 OpenGL 기능 세트를 사용하여 새 GLJPanel 구성 요소를 만듭니다. |
2 | (GLCapabilitiesImmutable) 요청 된 OpenGL 기능 세트로 새 GLJPanel 구성 요소를 만듭니다. |
삼 | GLJPanel(GLCapabilitiesImmutable userCapsRequest, GLCapabilitiesChooser chooser) 새로운 GLJPanel 컴포넌트를 생성합니다. |
아래는 GLJPanel 클래스의 메소드입니다.
Sr. 아니. | 방법 및 설명 |
---|---|
1 | void addGLEventListener(GLEventListener listener) 이 메서드는이 드로어 블 큐의 끝에 지정된 리스너를 추가합니다. |
2 | void addGLEventListener(int indexGLEventListener listener) 이 메서드는이 드로어 블 큐의 지정된 인덱스에 지정된 리스너를 추가합니다. |