Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1562793
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 23:25:33

一起学习

上个学期的一门课程中,我在一个项目中使用了OpenGL。我们的教授让我们写一段3D物体的程序——能画出3D物品的细节,设置它的属性并能够放大,运动,旋转,组合并复制。我们甚至不能使用更高层次的类库比如Java3D,老头要我们只能使用OpenGL。这可有些麻烦,不过还好我有NetBeans。哈,它再一次让事情变得轻松起来。

如果你不够谨慎,一段OpenGL的代码很容易变得复杂起来。里面有太多的设置,变量,矩阵,转换等等,少许的一些细节就可以让事情变得糟糕,可能你还没有意识到。所以,有一个好的IDE将会帮助你很多。

另一个因素是,我喜欢使用java来编写OpenGL的代码。在所有的其他语言里,你需要使用回调函数来执行openGL.比如在python中,你必须创建一个display()函数来将物体显示在屏幕上。

Java代码复制代码
  1. def display():
  2. “Draw a triangle”
  3. glClear(GL_COLOR_BUFFER_BIT)
  4. “Set Color”
  5. glColor3f (1.0, 1.0, 1.0)
  6. glBegin(GL_TRIANGLES);
  7. glVertex3f(0.0, 1.0, 0.0);
  8. glVertex3f(-1.0, -1.0, 0.0);
  9. glVertex3f(1.0, -1.0, 0.0);
  10. // Finished Drawing The Triangle
  11. glEnd();
  12. glutSwapBuffers()


然后告诉OpenGL display()关注屏幕显示。调用:
glutDisplayFunc(display)

而在java中不需要这样的回调。只需要使用接口方式就能实现,这样使得代码更容易被理解。我的项目中sphere类继承shape类并实现了Drawable接口。openGL的函数,例如display(),init(),reshape()可以在实现了GLEventListener的类中实现。

Java代码复制代码
  1. //Draw a triangle
  2. public void display(GLAutoDrawable drawable)
  3. {
  4. GL gl = drawable.getGL();
  5. // Clear the drawing area
  6. gl.glClear(GL.GL_COLOR_BUFFER_BIT);
  7. gl.glBegin(GL.GL_TRIANGLES);
  8. gl.glVertex3f(0.0f, 1.0f, 0.0f); // Top
  9. gl.glVertex3f(-1.0f, -1.0f, 0.0f); // Bottom Left
  10. gl.glVertex3f(1.0f, -1.0f, 0.0f); // Bottom Right
  11. // Finished Drawing The Triangle
  12. gl.glEnd();
  13. // Flush all drawing operations to the graphics card
  14. gl.glFlush();
  15. }


这贴不是来介绍openGL的。这里有关于使用netBeans6.0的openGL插件的教程



让我们开始在NetBeans6.0.1上JavaOpenGL的开发之路吧
第一步下载插件,可以在这里找到



添加插件完成后,重启netBeans,在file->new project中可以看到openGl工程了

你可能会想要看下自带的demo。插件里有许多JOGL的demo和红宝书的Demo。如果你是通过读红宝书学习OpenGL的,你可以看到书中的例子。

非常有意思的一点,OpenGL Panel和OpenGL Canvas都已经和Matisse系统集成了。所以你可以在你的GUI中使用Matisse并把OpenGL元素

TAG: NetBeans Netbeans netbeans opengl

下载本文示例代码


使用NetBeans 6.0.1开发OpenGL使用NetBeans 6.0.1开发OpenGL使用NetBeans 6.0.1开发OpenGL使用NetBeans 6.0.1开发OpenGL使用NetBeans 6.0.1开发OpenGL使用NetBeans 6.0.1开发OpenGL使用NetBeans 6.0.1开发OpenGL使用NetBeans 6.0.1开发OpenGL使用NetBeans 6.0.1开发OpenGL使用NetBeans 6.0.1开发OpenGL使用NetBeans 6.0.1开发OpenGL使用NetBeans 6.0.1开发OpenGL
阅读(299) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~