JOGL入门 第2课

此课将仔细说明,我假设读者是刚学习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]

你可能感兴趣的:(F#)