开发手册 欢迎您!
软件开发者资料库

JOGL - 转型

JOGL转换 - 使用这个初学者的教程,简单简单地学习JOGL,包括基本到高级知识,从简介,概述,安装,基本模板,带有AWT的画布,Swing,GLJPanel类,图形形状,对象转换,着色,缩放,旋转,照明,3D图形,附录。

OpenGL提供了更多功能,例如为对象应用颜色,缩放,照明,旋转对象等.本章介绍使用JOGL对对象进行的一些转换.

移动窗口上的对象

在前面的章节中,我们讨论了使用简单的线条绘制线条和绘制各种形状的程序.以这种方式创建的形状可以显示在窗口内的任何位置.它是使用方法 glTranslatef(float x,float y,float z)完成的.

此方法属于 GLMatrixFunc 接口,位于 javax.media.opengl.fixedfunc 包中.

GLMatrixFunc界面

界面 :  GLMatrixFunc

:  javax.media.opengl.fixedfunc

下表列出了此接口的一些重要方法 :

Sr.No.方法和描述
1

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

旋转当前矩阵.

2

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

用于缩放当前矩阵.

3

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()时,它会改变屏幕上组件的位置.因此,应该重写 GLEventListener 接口的 reshape()方法,并初始化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(); }