JOGL-변환

OpenGL은 객체에 색상 적용, 크기 조절, 조명, 객체 회전 등과 같은 더 많은 기능을 제공합니다.이 장에서는 JOGL을 사용하는 객체의 일부 변형에 대해 설명합니다.

창에서 개체 이동

이전 장에서는 단순한 선을 사용하여 선을 그리고 다양한 모양을 그리는 프로그램에 대해 논의했습니다. 이 방법으로 만든 모양은 창 내의 모든 위치에 표시 할 수 있습니다. 방법을 사용하여 수행됩니다.glTranslatef (float x, float y, float z).

이 방법은 GLMatrixFunc 인터페이스, javax.media.opengl.fixedfunc 꾸러미.

GLMatrixFunc 인터페이스

interface − GLMatrixFunc

package − javax.media.opengl.fixedfunc

다음 표는이 인터페이스의 몇 가지 중요한 방법을 나열합니다.

Sr. 아니. 방법 및 설명
1

void glRotatef(float angle, float x, float y, float z)

현재 행렬을 회전합니다.

2

void glScalef(float x, float y, float z)

현재 행렬의 크기를 조정하는 데 사용됩니다.

삼

void glTranslatef(float x, float y,float z)

현재 행렬을 변환하는 데 사용됩니다.

4

void glLoadIdentity()

단위 행렬이있는 현재 행렬을로드합니다.

그만큼 glTranslate() 메서드는 좌표계의 원점을 매개 변수 (x, y, z)로 지정된 지점으로 이동하고 glTranslate() 방법으로

논의. 번역되지 않은 좌표계를 저장하고 복원하려면glPushMatrix() 과 glPopMatrix() 방법이 사용됩니다.

gl.glTranslatef(0f, 0f, -2.5f);

할때는 언제나 glTranslate()사용하면 화면에서 구성 요소의 위치를 ​​변경합니다. 따라서reshape() 의 방법 GLEventListener 인터페이스를 재정의하고 OpenGL 뷰포트 및 투영 매트릭스를 초기화해야합니다.

다음 코드는 뷰 포트와 투영 행렬을 초기화하는 템플릿을 보여줍니다.

public void reshape(GLAutoDrawable drawable, int x,  int y, int width, int height) { 
  
   // TODO Auto-generated method stub 
   final GL2 gl = drawable.getGL().getGL2();  
            
   // get the OpenGL 2 graphics object   
   if(height <= 0) height = 1; 
       
   //preventing devided by 0 exception height = 1; 
   final float h = (float) width / (float) height; 
            
   // display area to cover the entire window 
   gl.glViewport(0, 0, width, height); 
            
   //transforming projection matrix 
   gl.glMatrixMode(GL2.GL_PROJECTION); 
   gl.glLoadIdentity(); 
   glu.gluPerspective(45.0f, h, 1.0, 20.0); 
      
   //transforming model view gl.glLoadIdentity(); 
   gl.glMatrixMode(GL2.GL_MODELVIEW); 
   gl.glLoadIdentity(); 
}