需要下载源代码的请到 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:[email protected]