您的位置: 新闻频道 Java新闻

原创新闻 使用NetBeans 6.0.1开发OpenGL

2008-03-31 by 资深记者 robertlyc
评论(3) 有1252人浏览 netbeans opengl

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

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

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

def display(): 
“Draw a triangle” 
glClear(GL_COLOR_BUFFER_BIT) 
“Set Color”
glColor3f (1.0, 1.0, 1.0)
glBegin(GL_TRIANGLES); 
glVertex3f(0.0, 1.0, 0.0); 
glVertex3f(-1.0, -1.0, 0.0); 
glVertex3f(1.0, -1.0, 0.0);
// Finished Drawing The Triangle
glEnd();
glutSwapBuffers()

  


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

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

//Draw a triangle
public void display(GLAutoDrawable drawable)
{
GL gl = drawable.getGL();
// Clear the drawing area
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glBegin(GL.GL_TRIANGLES); 
gl.glVertex3f(0.0f, 1.0f, 0.0f); // Top
gl.glVertex3f(-1.0f, -1.0f, 0.0f); // Bottom Left
gl.glVertex3f(1.0f, -1.0f, 0.0f); // Bottom Right
// Finished Drawing The Triangle
gl.glEnd(); 
// Flush all drawing operations to the graphics card
gl.glFlush();
}

 

 


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

http://jerome.jouvie.free.fr/OpenGl/Tutorials1-5.php

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

http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=3260

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

 

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

 

 

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

 

 


来自:www.sun.com

评论 共 3 条 发表评论

fkpwolf 2008-04-01 21:42
欢迎加入netbeans圈子http://netbeans.group.javaeye.com
linginfanta 2008-04-01 10:52
只用eclipse
gml520 2008-04-01 08:31
非常的棒!支持NetBeans

发表评论

您还没有登录,请登录后发表评论