以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Java/Eclipse 』  (http://bbs.xml.org.cn/list.asp?boardid=41)
----  有个问题请教jogl的  (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=46542)


--  作者:wuodao
--  发布时间:5/7/2007 10:52:00 PM

--  有个问题请教jogl的
运行有错,不是很明白初学,请高手帮忙谢!
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
//import net.java.games.jogl.*;
import javax.media.opengl.*;
import com.sun.opengl.util.*;
public class SecondJoglApp extends JFrame
{
 public static void main(String[] args)
 {
  final SecondJoglApp app = new SecondJoglApp();
              SwingUtilities.invokeLater
  (
   new Runnable()
   {            
    public void run()
    {               
     app.setVisible(true);            
    }         
   }      
  );   
 }   
 public SecondJoglApp()
 {
  //设置JFrame标题
  super("Second JOGL Application");
  //当JFrame关闭的时候,结束进程
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  //只有三行JOGL代码 ... 如下
  GLCapabilities glcaps = new GLCapabilities();
  GLCanvas glcanvas = GLDrawableFactory.getFactory().createGLCanvas(glcaps);
  glcanvas.addGLEventListener(new SecondGLEventListener());
  //像其它组件一样把GLCanvas加入
  getContentPane().add(glcanvas, BorderLayout.CENTER);
  setSize(500, 300);
  //使JFrame显示在屏幕中央
  centerWindow(this);
 }
 public 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);
   }
}
--  作者:wuodao
--  发布时间:5/7/2007 10:53:00 PM

--  
还一个一起的,大家应该见过的例子    
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//import net.java.games.jogl.*;
import javax.media.opengl.*;
public class SecondGLEventListener implements GLEventListener
{
 //注意这里的初始化。
 public void init(GLDrawable gld)
 {
  GL gl = gld.getGL();
  GLU glu = gld.getGLU();
  gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
  gl.glViewport(0, 0, 500, 300);
  gl.glMatrixMode(GL.GL_PROJECTION);
  gl.glLoadIdentity();
  glu.gluOrtho2D(0.0, 500.0, 0.0, 300.0);
 }
 //注意这里的绘图。
 public void display(GLDrawable drawable)
 {
  float red = 0.0f;
  float green = 0.0f;
  float blue = 0.0f;
  GL gl = drawable.getGL();
  gl.glClear(GL.GL_COLOR_BUFFER_BIT);
  gl.glPointSize(5.0f);
  for (int i=0; i<50; i++)
  {
   red -= .09f;
   green -= .12f;
   blue -= .15f;
   if (red < 0.15) red = 1.0f;
   if (green < 0.15) green = 1.0f;
   if (blue < 0.15) blue = 1.0f;
   gl.glColor3f(red, green, blue);
   gl.glBegin(GL.GL_POINTS);
   gl.glVertex2i((i*10), 150);
   gl.glEnd();
  }
 }
 public void reshape(GLDrawable drawable,int x,int y,int width,int height)
 {
 }
 public void displayChanged(GLDrawable drawable,boolean modeChanged,boolean deviceChanged)
 {
 }
}
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
35.156ms