此课将仔细说明,我假设读者是刚学习java并有一定图形学基础的,
首先jogl是java和opengl进行绑定的opengl的api你可以在网上下载
里面包含了opengl的函数,opengl是右手坐标系,
x正方向向右,y正方向向上,z正方向向外,我将在每课中尽量对代码进行讲解
绘制三角形,四边形并设置各顶点颜色,我在第1课的基础上进行修改
在display(GLAutoDrawable drawable)中修改代码
glClear(GLbitfield mask):参数有:GL_COLOR_BUFFER_BIT:表示颜色缓冲区
GL_DEPTH_BUFFER_BIT:表示深度缓冲区
GL_ACCUM_BUFFER_BIT:表示累积缓冲区
GL_DEPTH_BUFFER_BIT:表示模板缓冲区
调用此方法表示清除
glTranslate中包括glTranslatef(GLfloat x,GLfloat y,GLfloat z),
glTranslated(GLdouble x,GLdouble y,GLdouble z)
其中尾部的f,d:表示使用的类型以后看到很多这样的方法
x,y,z顾名思意,就是向x,y,z方向移动x,y,z个单位
glColor如上所说其中包括了很多方法如:glColor3f(GLfloat red,GLfloat green,GLfloat blue)
red,green,blue:指红,绿,蓝:3中颜色它们值的范围在0到1之间
也就是red只能是0到1之间的小数
glBegin:参数有 GL_POINTS:点,GL_LINES:线 GL_TRIANGLES:三角形等
要画什么图形要用相应的参数
glVertex3f如上:glVertex3f(GLfloat x,GLfloat y,GLfloat z)
指一个点如三角形有3个点,就要设定3次,像我们画图一样
下来glEnd();结束绘制了
public void display(GLAutoDrawable drawable)
{
GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT); //清除颜色缓冲
gl.glLoadIdentity(); //重置矩阵
gl.glTranslatef(0.0f, 0.0f, -6.0f); //向内(Z轴负方向)移动6
gl.glTranslatef(-2.0f, 0.0f, 0.0f);
//gl.glColor3f(0.0f, 1.0f, 0.0f); //设置颜色(r,g,b)绿色
gl.glBegin(GL.GL_QUADS); //开始绘制多边形
gl.glColor3f(1.0f, 0.0f, 0.0f);
gl.glVertex3f(-1.0f, -1.0f, 0.0f); //第1个顶点
gl.glColor3f(0.0f, 1.0f, 0.0f);
gl.glVertex3f(1.0f, -1.0f, 0.0f); //第2个顶点
gl.glColor3f(0.0f, 0.0f, 1.0f);
gl.glVertex3f(1.0f, 1.0f, 0.0f); //第3个顶点
gl.glColor3f(1.0f, 1.0f, 0.0f);
gl.glVertex3f(-1.0f, 1.0f, 0.0f); //第4个顶点
gl.glEnd();
//新添加代码
gl.glTranslatef(4.0f, 0.0f, 0.0f);
gl.glBegin(GL.GL_TRIANGLES); //开始绘制多边形
gl.glColor3f(1.0f, 0.0f, 0.0f);
gl.glVertex3f(-1.0f, -1.0f, 0.0f); //第1个顶点
gl.glColor3f(1.0f, 1.0f, 0.0f);
gl.glVertex3f(1.0f, -1.0f, 0.0f); //第2个顶点
gl.glColor3f(0.0f, 1.0f, 0.0f);
gl.glVertex3f(1.0f, 1.0f, 0.0f); //第3个顶点
gl.glEnd();
}
声明:
刚开始学习opengl的时候,在网上找了很久,终于找到NeHe的教程,从中得到了很多
我也希望我自己东拼西凑弄共享给大家,我也希望有更多的人加入进来,
引用时请声明此点,如果有问题请多多指教,大家互相帮助了我的E-mail:
[email protected]