java_JOGL_安装,例子
来源:互联网 发布:qq防举报软件 编辑:程序博客网 时间:2024/06/03 13:46
用的是JOGL2
我是自己编译的包,地址在 https://jogamp.org/jogl/doc/HowToBuild.html
参考它的教程来就行了,注意我编译的时候有个 xf11vmode.h 找不到
通过 sudo apt-get install libxxf86vm-dev 解决
编译完了后,在两个build文件夹里提取这些文件,其它的用到的时候再说
放到项目的libs文件夹里
gluegen-rt.jar
jogl-all.jar
libgluegen-rt.so
libjogl_desktop.so
libnativewindow_awt.so
libnativewindow_x11.so
全部加入lib路径
网上抄了一个老例子,把几个class的路径改正确了,
netbeans 要在properties 的Run-》VM Options 里加 -Djava.library.path="./libs" ,否则找不到so文件
把例子放在这里,结尾有下载地址
package joglexample;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.media.opengl.*;import com.jogamp.opengl.util.Animator;import com.jogamp.opengl.util.FPSAnimator;import javax.media.opengl.awt.GLCanvas;public class JOGLExample extends JFrame {GLRender listener=new GLRender();static FPSAnimator animator=null;public JOGLExample() throws HeadlessException {super("太阳与地球");setSize(600,480);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);GLCapabilities glcaps=new GLCapabilities(null); //这里和之前章节的代码有区别.GLCanvas canvas=new GLCanvas((GLCapabilitiesImmutable) glcaps);canvas.addGLEventListener(listener);//canvas.addMouseListener(listener);getContentPane().add(canvas, BorderLayout.CENTER);animator=new FPSAnimator(canvas, 60, true); centerWindow(this);}private void centerWindow(Component frame) { // 居中窗体Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();Dimension frameSize = frame.getSize();if (frameSize.width > screenSize.width)frameSize.width = screenSize.width;if (frameSize.height > screenSize.height)frameSize.height = screenSize.height;frame.setLocation((screenSize.width - frameSize.width) >> 1,(screenSize.height - frameSize.height) >> 1);}public static void main(String[] args) {final JOGLExample app = new JOGLExample();// 显示窗体SwingUtilities.invokeLater(new Runnable() {public void run() {app.setVisible(true);}});// 动画线程开始SwingUtilities.invokeLater(new Runnable() {public void run() {animator.start();}});}}
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package joglexample;import com.jogamp.opengl.util.gl2.GLUT; //这里类所在包改变了import javax.media.opengl.GL;import javax.media.opengl.GL2;import javax.media.opengl.GLAutoDrawable;import javax.media.opengl.GLEventListener;import javax.media.opengl.glu.GLU; //这里类所在包改变了public class GLRender implements GLEventListener { GL2 gl; GLU glu; GLUT glut; float whiteLight[] = {0.2f, 0.2f, 0.2f, 1.0f}; float sourceLight[] = {0.8f, 0.8f, 0.8f, 1.0f}; float lightPos[] = {0.0f, 0.0f, 0.0f, 1.0f}; float fMoonRot = 0.0f;float fEarthRot = 0.0f; public void init(GLAutoDrawable drawable) { gl = drawable.getGL().getGL2(); //主要就是这里发生变化 glu = new GLU(); glut=new GLUT(); // Light values and coordinates gl.glEnable(GL.GL_DEPTH_TEST);// 启用深度测试 gl.glFrontFace(GL.GL_CCW);//设置CCW方向为“正面”,CCW即CounterClockWise,逆时针 gl.glEnable(GL.GL_CULL_FACE);//用GL_CULL_FACE符号常量调用glEnable函数表示开启多边形表面剔除功能 // 启用灯光 gl.glEnable(GL2.GL_LIGHTING); // 设置灯光 gl.glLightModelfv(GL2.GL_LIGHT_MODEL_AMBIENT, whiteLight, 0); gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_DIFFUSE, sourceLight, 0); gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION, lightPos, 0); gl.glEnable(GL2.GL_LIGHT0); // 启用材质 gl.glEnable(GL2.GL_COLOR_MATERIAL); // 决定对物体的正面还是反面,对环境光、镜面光还是漫射光进行颜色跟踪。 //第一个参数可以取GL_FRONT、GL_BACK、GL_FRONT_AND_BACK中的任意一种, //第二个参数可以取GL_AMBIENT、GL_DIFFUSE、GL_AMBIENT_AND_DIFFUSE、GL_SPECULAR中的任意一种。 gl.glColorMaterial(GL.GL_FRONT, GL2.GL_AMBIENT_AND_DIFFUSE); // 黑色背景 gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); } public void display(GLAutoDrawable drawable) {// 填充背景为背景颜色gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);// 保存矩阵状态和做旋转gl.glMatrixMode(GL2.GL_MODELVIEW);gl.glPushMatrix();// 画图点移动到Z里300的位置,负为向里,正为向程序员.gl.glTranslatef(0.0f, 0.0f, -300.0f);// Set material color, Red// 太阳 gl.glDisable(GL2.GL_LIGHTING);gl.glColor3ub((byte)255, (byte)255, (byte)0);glut.glutSolidSphere(15.0f, 30, 17); gl.glEnable(GL2.GL_LIGHTING);// 重新设置灯光到太阳的位置gl.glLightfv(GL2.GL_LIGHT0,GL2.GL_POSITION,lightPos,0);// 围绕Y轴旋转矩阵gl.glRotatef(fEarthRot, 0.0f, 1.0f, 0.0f);// 画地球gl.glColor3ub((byte)0,(byte)200,(byte)255);gl.glTranslatef(105.0f,0.0f,0.0f);glut.glutSolidSphere(15.0f, 30, 17);//围绕Y轴旋转矩阵,当前旋转中心为地球,被旋转的是月球gl.glColor3ub((byte)200,(byte)200,(byte)200);gl.glRotatef(fMoonRot,0.0f, 1.0f, 0.0f);gl.glTranslatef(30.0f, 0.0f, 0.0f);fMoonRot+= 15.0f;if(fMoonRot > 360.0f)fMoonRot = 0.0f;glut.glutSolidSphere(6.0f, 30, 17);// 还原状态矩阵gl.glPopMatrix();// Modelview matrix//地球轨道每步5度,旋转度数fEarthRot += 2.0f;if(fEarthRot > 360.0f)fEarthRot = 0.0f; } public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { float fAspect; // 防止为零 if (height == 0) { height = 1; } //视口设置为窗口尺寸 gl.glViewport(0, 0, width, height); fAspect = (float) width / height; // Reset projection matrix stack gl.glMatrixMode(GL2.GL_PROJECTION); gl.glLoadIdentity(); //透视投影 眼角度,比例,近可视,远可视 glu.gluPerspective(53.0f, fAspect, 1.0, 400.0); // 重置模型观察矩阵堆栈 gl.glMatrixMode(GL2.GL_MODELVIEW); gl.glLoadIdentity(); } public void dispose(GLAutoDrawable arg0) { }}
下载地址:http://download.csdn.net/detail/blacklaw0/5719093
- java_JOGL_安装,例子
- INF安装例子
- tomcat6安装+servlet例子
- tomcat6安装+servlet例子
- sublime安装插件例子
- GLPK Mac 安装 例子
- quickpart的安装及例子
- libmemcached安装及简单例子
- PHP+memcache安装使用例子
- Linux 下 安装软件 例子
- Hbase 安装--7. 例子 PutExample
- Ubuntu 安装FastFDS 例子,步骤
- redis安装和简单例子
- dotnet的安装包例子
- Windows nginx安装使用例子
- NuSMV安装及例子运行
- NuSMV安装及例子运行
- FlexBuilder安装和HelloWorld例子
- Twitter Storm的一些关键概念
- Android常见问题
- stl::string 函数备份
- jquery里截取获取的字符的前后空格
- Android 中使用自定义字体的方法
- java_JOGL_安装,例子
- ajax仿thinkphp官网搜索功能
- Android 在一个应用中如何启动另外一个已安装的应用!!!
- C# 网络编程之获取本机名、ip地址、域名、物理位置
- 对vector等STL标准容器进行排序操作
- mysql分表与分区
- Xcode4.0版本自己创建MainWindow.xib
- 不弹出提示框直接导出excel
- 解决IE浏览器缓存通用方法