上个学期的一门课程中,我在一个项目中使用了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);
-
- glEnd();
- glutSwapBuffers()
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的类中实现。
-
- public void display(GLAutoDrawable drawable)
- {
- GL gl = drawable.getGL();
-
- gl.glClear(GL.GL_COLOR_BUFFER_BIT);
- gl.glBegin(GL.GL_TRIANGLES);
- gl.glVertex3f(0.0f, 1.0f, 0.0f);
- gl.glVertex3f(-1.0f, -1.0f, 0.0f);
- gl.glVertex3f(1.0f, -1.0f, 0.0f);
-
- gl.glEnd();
-
- gl.glFlush();
- }
//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元素

TAG:
NetBeans
Netbeans
netbeans
opengl