原文:http://blog.csdn.net/sidihuo/article/details/44035015

第一个类(代码解读)

[java] view plaincopy
  1. package test1.opengl;
  2. import java.awt.BorderLayout;
  3. import java.awt.Component;
  4. import java.awt.Dimension;
  5. import java.awt.HeadlessException;
  6. import java.awt.Toolkit;
  7. import javax.media.opengl.GLCanvas;
  8. import javax.media.opengl.GLCapabilities;
  9. import javax.swing.JFrame;
  10. import javax.swing.SwingUtilities;
  11. import com.sun.opengl.util.Animator;
  12. import com.sun.opengl.util.FPSAnimator;
  13. public class SecondJoglApp extends JFrame {
  14. public static Animator animator = null;
  15. public GLCanvas canvas = null;
  16. public SecondJoglApp() throws HeadlessException {
  17. super("第二个JOGL");
  18. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  19. // 初始化GLCapabilities
  20. final GLCapabilities glcaps = new GLCapabilities();
  21. canvas = new GLCanvas(glcaps); // 初试化GLcanvas,用法参照第一章
  22. canvas.addGLEventListener(new SecondGLEventListener()); // GLcanvas添加GLEventListener
  23. getContentPane().add(canvas, BorderLayout.CENTER); // 给窗体panel添加GLcanvas
  24. animator = new FPSAnimator(canvas, 10, true); // 本章重点,给canvas添加动画线程,每秒10帧
  25. setSize(500, 300);
  26. centerWindow(this);
  27. }
  28. public void centerWindow(final Component frame) { // 把窗体居中
  29. final Dimension screenSize =
  30. Toolkit.getDefaultToolkit().getScreenSize();
  31. final Dimension frameSize = frame.getSize();
  32. if (frameSize.width > screenSize.width) {
  33. frameSize.width = screenSize.width;
  34. }
  35. if (frameSize.height > screenSize.height) {
  36. frameSize.height = screenSize.height;
  37. }
  38. frame.setLocation(
  39. screenSize.width - frameSize.width >> 1,
  40. screenSize.height - frameSize.height >> 1
  41. );
  42. }
  43. public static void main(final String[] args) {
  44. // TODO Auto-generated method stub
  45. final SecondJoglApp app = new SecondJoglApp();
  46. // 显示窗体
  47. SwingUtilities.invokeLater(
  48. new Runnable() {
  49. @Override
  50. public void run() {
  51. app.setVisible(true);
  52. }
  53. }
  54. );
  55. SwingUtilities.invokeLater(
  56. new Runnable() {
  57. @Override
  58. public void run() {
  59. animator.start(); // 开始动画线程
  60. }
  61. }
  62. );
  63. }
  64. }

第二个类

[java] view plaincopy
  1. package test1.opengl;
  2. import javax.media.opengl.GL;
  3. import javax.media.opengl.GLAutoDrawable;
  4. import javax.media.opengl.GLEventListener;
  5. import javax.media.opengl.glu.GLU;
  6. public class SecondGLEventListener implements GLEventListener {
  7. public SecondGLEventListener() {
  8. // TODO Auto-generated constructor stub
  9. }
  10. @Override
  11. public void display(final GLAutoDrawable arg0) { // 画图函数
  12. // TODO Auto-generated method stub
  13. float red = (float) (Math.random() * 1.0f); // 随机红
  14. float green = (float) (Math.random() * 1.0f); // 随机绿
  15. float blue = (float) (Math.random() * 1.0f); // 随机蓝
  16. final GL gl = arg0.getGL(); // 从GLAutoDrawable获取GL
  17. gl.glClear(GL.GL_COLOR_BUFFER_BIT); // 填充背景颜色
  18. gl.glPointSize(5.0f); // 设置点的大小
  19. for (int i = 0; i < 50; i++) { // 画点
  20. red -= .09f; // 红色值递减
  21. green -= .12f; // 绿色值递减
  22. blue -= .15f; // 蓝色值递减
  23. if (red < 0.15) {
  24. red = 1.0f;
  25. }
  26. if (green < 0.15) {
  27. green = 1.0f;
  28. }
  29. if (blue < 0.15) {
  30. blue = 1.0f;
  31. }
  32. gl.glColor3f(red, green, blue); // 设置GL的画图颜色,也就是画刷的颜色
  33. gl.glBegin(GL.GL_POINTS);
  34. gl.glVertex2i(i * 10, 150); // 画点由glBegin(GL.GL_POINTS)开始,glEnd()结束
  35. gl.glEnd();
  36. }
  37. }
  38. @Override
  39. public void displayChanged(final GLAutoDrawable arg0, final boolean arg1, final boolean arg2) {
  40. // TODO Auto-generated method stub
  41. }
  42. @Override
  43. public void init(final GLAutoDrawable gld) { // 初始函数
  44. // TODO Auto-generated method stub
  45. final GL gl = gld.getGL();
  46. final GLU glu = new GLU();
  47. gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // 设置背景颜色
  48. gl.glViewport(0, 0, 500, 300); // 视点大小
  49. gl.glMatrixMode(GL.GL_PROJECTION);
  50. gl.glLoadIdentity();
  51. glu.gluOrtho2D(0.0, 500.0, 0.0, 300.0); // 使坐标系统出现在GL里
  52. }
  53. @Override
  54. public void reshape(final GLAutoDrawable arg0, final int arg1, final int arg2, final int arg3,
  55. final int arg4) {
  56. // TODO Auto-generated method stub
  57. }
  58. }

JAVA的OPENGL,JOGL入门实例----不断变色的点阵 (源代码)相关推荐

  1. java 消息机制 ActiveMQ入门实例

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt180 1.下载ActiveMQ  去官方网站下载:http://active ...

  2. java jna 例子_JNA入门实例

    JNI是Java调用原生函数的唯一机制,JNA就是建立在JNI之上,JNA简化了Java调用原生函数的过程.JNA提供了一个动态的C语言编写的转发器(实际上也是一个动态链接库,在Linux-i386中 ...

  3. Java操作Excel表格入门实例

    算法学累了 换个知识学一下 这次算是复习 首先 操作表格需要用到第三方的库 Java本身没有 需要引入类库 如果你会使用Maven 那么直接导入刷新就行 <dependency><g ...

  4. java onkeydown_JavaScript onkeydown事件入门实例(键盘某个按键被按下)

    JavaScript onkeydown 事件 用户按下一个键盘按键时会触发 onkeydown 事件.与 onkeypress事件不同的是,onkeydown 事件是响应任意键按下的处理(包括功能键 ...

  5. JOGL   java调用openGL

    JOGL   java调用openGL JOGL   java调用openGL JOGL   java调用openGL JOGL   java调用openGL http://download.java ...

  6. JOGL - Java与OpenGl的绑定(转)

    JOGL - Java与OpenGl的绑定 默认分类 2009-11-22 20:31:05 阅读4 评论0 字号:大中小 在这篇文章里,摘录了<学习Java对于OpenGl的绑定>.作者 ...

  7. Java Socket入门实例

    基于测试驱动的Socket入门实例(代码的具体功能可以看我的程序中的注释,不理解的可以短信我) 先看Server的代码: package socketStudy; import java.io.Buf ...

  8. java rmi 入门实例

    java rmi 入门实例 (2009-06-16 16:07:55) 转载▼ 标签: java rmi 杂谈 分类: java-基础  java rmi即java远程接口调用,实现了2台虚拟机之间的 ...

  9. java对opengl绑定_你好,JOGL - Java与OpenGl的绑定-Java频道-中国IT实验室

    然后出现了JOGL 也许是最流行的真正的面向对象的编程语言.有许多用去结合OpenGL的尝试,但是第一个被大家认可并注意的是Java对于OpenGl的绑定(Java Bindings for Open ...

最新文章

  1. Linux下快速安装TensorFlow的教程
  2. opencv学习笔记3:像素处理
  3. 【数据结构与算法】之深入解析“通配符匹配”的求解思路与算法示例
  4. 用盛金公式求解一元三次方程
  5. AlphaFold2开源了,不是土豪也不会编程的你怎么蹭一波?
  6. DNS无法解析IP_通过YouTube的封杀窥视DNS原理
  7. 惠普战66拆机加固态_惠普战66测评:想要提高办公效率,惠普是你的品质之选...
  8. 信号与线性系统分析(吴大正,郭宝龙)(2-冲激函数)
  9. 汇编语言笔记-ARM架构指令集
  10. 计算机产品校园营销方案,惠普笔记本电脑校园营销策划方案.doc
  11. 【汇编语言】第三章 寄存器(内存访问)
  12. 十进制转二进制,短除法与位运算两种方法
  13. 无法加载SQLite.Interop.dll:找不到指定模块
  14. Spliterator
  15. Amazon亚马逊卖家设置World First(WF卡)收款教程!
  16. matlab模糊控制图怎么导出_matlab模糊控制工具箱的使用
  17. 简单好用的树莓派磁盘空间管理工具
  18. sql的左连接,右连接,内连接
  19. 2016国内热门的企业级SaaS应用
  20. 中国第一份OA系统用户实名口碑选型报告(选型宝重磅发布!)

热门文章

  1. java jdwp如何关闭_蚀-本机方法中的致命错误:JDWP没有初始化传输,jvmtiError = AGENT_ERROR_TRANSPORT_INIT(197)...
  2. 眼图在通信系统中有什么意义_悟空CRM:施行CRM系统对汽车行业有什么意义
  3. n个数求和 java_暴力+辗转相除法——N个数求和
  4. 世界人口钟实时数据_中美面积人口数据对比,2020年8月,值得了解的细节
  5. 皮一皮:充实的一天...
  6. 千万微信红包封面领取攻略,抢到你吐
  7. 每日一皮:单身狗的悲哀...
  8. Java开发中Websocket的技术选型参考
  9. 开源:推荐一个不错的离线IP地址定位库
  10. 1024 大促书单丨神券在手,快乐我有