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

JOGL入门 第1课

阅读更多

需要下载源代码的请到 JOGL 第5课 纹理(bmp) 下载 教程.rar


刚开始接触java觉得很好玩,弄东弄西,玩了N多3D游戏,自己也想学习学习,

网上找java有关3D方面的资料,还真是难找,想想在学习VC++下OpenGL编程,我在

NeHe那里得到了很多帮助,因而自己一边学一边写点,目的是能给大家入门提供点帮助吧。



首先我用的是Eclipse 3.2 +JOGL

1.下载jdk,JGOL包,Eclipse 3.2

jdk,Eclipse网上可以随便找到

JOGL:我这里用的是

https://jogl.dev.java.net/

下载jogl-1.1.2-pre-20080523-windows-i586.zip

解压出来,我们要用到的就是lib文件夹里面的东西了



2.新建个项目,如:Myjava3d,右键点击->Properties(属性),

Java Build Path(java构建路径)-> Libraries(库),添加外部库,

把刚才解压出来的lib中的gluegen-rt.jar,jogl.jar;加进去

点击jogl.jar->Native library location->Edit,把选择刚才的lib文件夹

还有把lib里面的DLL文件



3.开始我们的第1个JOGL,

新建一个类 FirstJOGL



import java.awt.event.*;



import javax.media.opengl.*;

import javax.media.opengl.glu.*;

import javax.swing.*;





public class FirstJOGL extends JFrame implements GLEventListener, KeyListener, MouseListener

{

private GL gl;

  private GLU glu;

  private GLCapabilities caps;

  private GLCanvas canvas;

  private MouseEvent mouse;

                                 





  public FirstJOGL()

  {

    super("FirstJOGL");



    caps = new GLCapabilities();

    canvas = new GLCanvas(caps);

    canvas.addGLEventListener(this);

    canvas.addKeyListener(this);

    canvas.addMouseListener(this);

    getContentPane().add(canvas);

  }



  public void run()

  {

    setSize(800, 600);

    setLocationRelativeTo(null);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    setVisible(true);

    canvas.requestFocusInWindow();

    canvas.swapBuffers();

  }



  public static void main(String[] args)

  {

    new FirstJOGL().run();

   

  }



  public void init(GLAutoDrawable drawable)

  {

    gl = drawable.getGL();

    glu = new GLU();

    gl.glShadeModel(GL.GL_SMOOTH);

    gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

    gl.glClearDepth(1.0f); // 设置深度缓存

    gl.glEnable(GL.GL_DEPTH_TEST); // 启用深度测试

    gl.glDepthFunc(GL.GL_LEQUAL);

    gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); // 告诉系统对透视进行修正 

  }



  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.glColor3f(0.0f, 1.0f, 0.0f);        //设置颜色(r,g,b)绿色

    gl.glBegin(GL.GL_QUADS);               //开始绘制多边形

       gl.glVertex3f(-1.0f, -1.0f, 0.0f);  //第1个顶点

       gl.glVertex3f(1.0f, -1.0f, 0.0f);   //第2个顶点

       gl.glVertex3f(1.0f, 1.0f, 0.0f);    //第3个顶点

       gl.glVertex3f(-1.0f, 1.0f, 0.0f);   //第4个顶点

    gl.glEnd();



  }



  public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h)

  {

    GL gl = drawable.getGL();

   

    gl.glViewport(0, 0, w, h);   //视见区域

    gl.glMatrixMode(GL.GL_PROJECTION);//哪一个矩阵堆栈

    gl.glLoadIdentity(); //重置矩阵

    glu.gluPerspective(45.0, (float) w / (float) h, 1.0, 100.0);//创建透视矩阵

    gl.glMatrixMode(GL.GL_MODELVIEW);

    gl.glLoadIdentity();

  }



  public void displayChanged(GLAutoDrawable drawable, boolean modeChanged,

      boolean deviceChanged)

  {



  }



  public void keyTyped(KeyEvent key)

  {

  }



  public void keyPressed(KeyEvent key)

  {



    switch (key.getKeyCode()) {

      case KeyEvent.VK_ESCAPE:

        System.exit(0);

        break;



      default:

        break;

    }



  }



  public void keyReleased(KeyEvent key)

  {

  }



  public void mouseClicked(MouseEvent e)

  {

  }



  public void mousePressed(MouseEvent e)

  {

  }



  public void mouseReleased(MouseEvent e)

  {

  }



  public void mouseEntered(MouseEvent e)

  {

  }



  public void mouseExited(MouseEvent e)

  {

  }



这就是我的第1个JOGL程序,代码很简单吧,这里实现了绘制一个绿色的四边形



声明:




     刚开始学习opengl的时候,在网上找了很久,终于找到NeHe的教程,从中得到了很多

     我也希望我自己东拼西凑弄共享给大家,我也希望有更多的人加入进来,

     引用时请声明此点,如果有问题请多多指教,大家互相帮助了我的E-mail:huangchunquanmaker@163.com

 

分享到:
评论
1 楼 心宿七 2013-04-05  
https://jogl.dev.java.net/的网站上不去啊。。。

相关推荐

Global site tag (gtag.js) - Google Analytics