import java.awt.event.*; import javax.swing.*; import javax.media.opengl.*; import javax.media.opengl.glu.*; import com.sun.opengl.util.*; public class colormask// extends glskeleton// implements GLEventListener// , KeyListener// { private GLUT glut; private GLU glu; // public colormask() { } public static void main(String[] args) { GLCapabilities caps = new GLCapabilities(); GLJPanel canvas = new GLJPanel(caps); colormask demo = new colormask(); demo.setCanvas(canvas); canvas.addGLEventListener(demo); demo.setDefaultListeners(demo); // JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new JFrame("colormask"); frame.setSize(500, 500); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(canvas); frame.setVisible(true); canvas.requestFocusInWindow(); } /* * Initialize material property, light source, lighting model, and depth * buffer. */ public void init(GLAutoDrawable drawable) { GL gl = drawable.getGL(); glut = new GLUT(); glu = new GLU(); // gl.glClearColor(1.0f, 1.0f, 1.0f, 0.0f); gl.glEnable(GL.GL_DEPTH_TEST); gl.glDepthFunc(GL.GL_LESS); } public void display(GLAutoDrawable drawable) { GL gl = drawable.getGL(); // gl.glLoadIdentity(); gl.glRotatef(20,1,0,0); gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); // gl.glPolygonMode(GL.GL_FRONT_AND_BACK,GL.GL_LINE); // gl.glCullFace(GL.GL_FRONT); // gl.glEnable(GL.GL_CULL_FACE); // gl.glColorMask(true,true,false,false); gl.glColor3d(0.0,0.0,0.0); glut.glutSolidSphere(1.0, 20, 20); } public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) { GL gl = drawable.getGL(); // gl.glViewport(0, 0, w, h); gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); if (w <= h) // gl.glOrtho(-2.5, 2.5,// -2.5 * (float) h / (float) w,// 2.5 * (float) h / (float) w,// -10.0, 10.0); else gl.glOrtho(-2.5 * (float) w / (float) h, // 2.5 * (float) w / (float) h, // -2.5, 2.5, -10.0, 10.0); gl.glMatrixMode(GL.GL_MODELVIEW); gl.glLoadIdentity(); } public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) { } public void keyTyped(KeyEvent key) { } public void keyPressed(KeyEvent key) { switch (key.getKeyCode()) { case KeyEvent.VK_ESCAPE: super.runExit(); break; default: break; } } public void keyReleased(KeyEvent key) { } }