底下是第1~5课的
全部代码Eclipse 3.2下测试成功
这课是我根据Pepe & Lizzie’s Adventures第6课Texture mapping
结合第4课写的
1.首先要引入3个文件:BitmapLoader.java
功能:负责读取bmp图片(只对8位和24位)转化为BufferedImage
ResourceRetriever.java
功能:读取资源从jar包或当前路径
也就是针对java中读取文件时要使用绝对路径的问题
TextureReader.java
功能:把BufferedImage转化为使OpenGL容易识别的数据结构
2.包含TextureReader.java 用于载入bmp图片
import common.TextureReader;
3.包含私有成员
private float xrot;//绕X轴
private float yrot;//绕Y轴
private float zrot;//绕Z轴
private int texture;//纹理
4.在init(GLAutoDrawable drawable)方法里面添加
//--------------新添加代码-------
gl.glEnable(GL.GL_TEXTURE_2D);//启动纹理映射
texture = genTexture(gl);//返回操作的未被使用的纹理对象的索引
gl.glBindTexture(GL.GL_TEXTURE_2D, texture);//指定和绑定纹理(这里是绑定纹理)
TextureReader.Texture texture1 = null;
try {
texture1 = TextureReader.readTexture("data/Crate.bmp");//bmp图片
//texture1 = TextureReader.readTexture("data/glass.png");
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
glu.gluBuild2DMipmaps(GL.GL_TEXTURE_2D, GL.GL_RGB8, texture1.getWidth(), texture1.getHeight(), GL.GL_RGB, GL.GL_UNSIGNED_BYTE, texture1.getPixels());
gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
//--------------
5.在类中添加一个方法
//--------------新添加代码------------
//返回操作的未被使用的纹理对象的索引
private int genTexture(GL gl) {
final int[] tmp = new int[1];
gl.glGenTextures(1, tmp, 0);
return tmp[0];
}
6.display方法的全部代码
//-----------------------
public void display(GLAutoDrawable drawable)
{
GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT|GL.GL_DEPTH_BUFFER_BIT); //清除颜色缓冲
gl.glLoadIdentity(); //重置矩阵
gl.glTranslatef(0.0f, 0.0f, -6.0f); //向内(Z轴负方向)移动6
gl.glTranslatef(0.0f, 0.0f, -6.0f); //向内(Z轴负方向)移动6
gl.glRotatef(xrot, 1.0f, 0.0f, 0.0f);
gl.glRotatef(yrot, 0.0f, 1.0f, 0.0f);
gl.glRotatef(zrot, 0.0f, 0.0f, 1.0f);
gl.glBindTexture(GL.GL_TEXTURE_2D, texture);//指定和绑定纹理(这里是指定纹理)
gl.glBegin(GL.GL_QUADS);
// 前面
gl.glTexCoord2f(0.0f, 0.0f);gl.glVertex3f(-1.0f, -1.0f, 1.0f);
gl.glTexCoord2f(1.0f, 0.0f);gl.glVertex3f(1.0f, -1.0f, 1.0f);
gl.glTexCoord2f(1.0f, 1.0f);gl.glVertex3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 1.0f);gl.glVertex3f(-1.0f, 1.0f, 1.0f);
// 后面
gl.glTexCoord2f(1.0f, 0.0f);gl.glVertex3f(-1.0f, -1.0f, -1.0f);
gl.glTexCoord2f(1.0f, 1.0f);gl.glVertex3f(-1.0f, 1.0f, -1.0f);
gl.glTexCoord2f(0.0f, 1.0f);gl.glVertex3f(1.0f, 1.0f, -1.0f);
gl.glTexCoord2f(0.0f, 0.0f);gl.glVertex3f(1.0f, -1.0f, -1.0f);
// 上面
gl.glTexCoord2f(0.0f, 1.0f);gl.glVertex3f(-1.0f, 1.0f, -1.0f);
gl.glTexCoord2f(0.0f, 0.0f);gl.glVertex3f(-1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(1.0f, 0.0f);gl.glVertex3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(1.0f, 1.0f);gl.glVertex3f(1.0f, 1.0f, -1.0f);
// 下面
gl.glTexCoord2f(1.0f, 1.0f);gl.glVertex3f(-1.0f, -1.0f, -1.0f);
gl.glTexCoord2f(0.0f, 1.0f);gl.glVertex3f(1.0f, -1.0f, -1.0f);
gl.glTexCoord2f(0.0f, 0.0f);gl.glVertex3f(1.0f, -1.0f, 1.0f);
gl.glTexCoord2f(1.0f, 0.0f);gl.glVertex3f(-1.0f, -1.0f, 1.0f);
// 右面
gl.glTexCoord2f(1.0f, 0.0f);gl.glVertex3f(1.0f, -1.0f, -1.0f);
gl.glTexCoord2f(1.0f, 1.0f);gl.glVertex3f(1.0f, 1.0f, -1.0f);
gl.glTexCoord2f(0.0f, 1.0f);gl.glVertex3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);gl.glVertex3f(1.0f, -1.0f, 1.0f);
// 左面
gl.glTexCoord2f(0.0f, 0.0f);gl.glVertex3f(-1.0f, -1.0f, -1.0f);
gl.glTexCoord2f(1.0f, 0.0f);gl.glVertex3f(-1.0f, -1.0f, 1.0f);
gl.glTexCoord2f(1.0f, 1.0f);gl.glVertex3f(-1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 1.0f);gl.glVertex3f(-1.0f, 1.0f, -1.0f);
gl.glEnd();
xrot += 0.3f;
yrot += 0.2f;
zrot += 0.4f;
}
分享到:
相关推荐
Texture_Mapping_JOGL “使用JOGL纹理映射和计算法线”的实践代码 JOGL的最新版本位于可从此页面下载jogamp-all-platforms.7z。
jogl简介,jogl入门例子,jogl简介,jogl入门例子
nehe 的 Jogl教程源码,学习Jogl很好的参考材料
jogl简单入门例子,15个例子,已经包含了JOGL1.0,2.0的jar包
64bit的jogl包,里面包含jogl.jar,gluegen-rt.jar,已经四个解压dll文件
JOGL source code and project information can be found at: https://jogl.dev.java.net/ Numerous answers to common questions can be found on the JOGL forum: http://www.javagaming.org/index.php/board,...
英文版的jogl 4合1教程,很不错个人觉得jogl 比j3d要好
Nehe三维教程Jogl版
jogl的官方api,英文版的,你可以从里面了解到jogl的详细api信息
网上找到的关于JOGL的PDF格式的资料
JOGL2版本在Eclipse里面配置的图文教程,通俗易懂
想做自己的3d游戏么 想知道用java怎么实现opengl那样炫的效果么物超所值导入myeclipse工程直接可以使用.还等神马骚年.下载吧 注意有个别类没修改完不过这可是俺修改的最新jogl教程
整理好的关于搭建jogl开发环境需要的相关jar包、动态链接库(包括32为系统和64位系统的)以及相关的src和开发文档。
nehe-source JOGL学习代码
jogl-2.0-windows-i586
Java+Opengl Jogl的单机开发示例 看懂了这个你就可以用Jogl开发三维程序了
JOGL2版本在Eclipse里面的详细图文操作教程,完全原创,同俗易懂
JAVA JOGL WIN32,,,大家有可能已经发现现在的JOGL.JAR包中没有creatCanvas creatJpanel等方法,我的这个有,多多共享,多多贡献
里边包括:jogl架包,system32所需要文件。研究jogl,opgl的可以看看