`
HCQmaker
  • 浏览: 46837 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JOGL入门 第2课

F# 
阅读更多
此课将仔细说明,我假设读者是刚学习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:huangchunquanmaker@163.com
分享到:
评论
2 楼 HCQmaker 2009-09-15  

1.在写这个程序的时候都是我自己通过了测试才编写的,源代码也在后面给出
不会出现黑屏的问题,
2.第2个课程只是绘制一个三角形和正方形,没有加入动画,只有第3课才加入

由于我的思路是 从最简单的做起,一步一步建立复杂的东西,因此没有全部直接加入
里面有可能还有不少错误的地方,如果发现还请指出
1 楼 xlongbuilder 2009-09-13  
看了你两个例子 但都有问题
还请 负点责任

第一个问题
第一个例子 黑屏
要加 gl.glClear(GL.GL_COLOR_BUFFER_BIT);
第二个 根本就不会动的
原因线程没起
final Animator animator = new Animator(canvas);
animator.start();

相关推荐

Global site tag (gtag.js) - Google Analytics