1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
package glredbook11;
import glredbook10.GLSkeleton;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import com.jogamp.opengl.*;
import com.jogamp.opengl.awt.GLJPanel;
import com.jogamp.opengl.glu.GLU;
import javax.swing.JFrame;
/**
*
* @author Kiet Le (Java port) Ported to JOGL 2.x by Claudio Eduardo Goes
*/
public class aargb//
extends GLSkeleton<GLJPanel>
implements GLEventListener, KeyListener {
private float rotAngle = 0f;
private boolean rotate = false;
@Override
protected GLJPanel createDrawable() {
GLCapabilities caps = new GLCapabilities(null);
caps.setNumSamples(2);
caps.setSampleBuffers(true);
//
GLJPanel panel = new GLJPanel(caps);
panel.addGLEventListener(this);
panel.addKeyListener(this);
return panel;
}
public static void main(String[] args) {
aargb demo = new aargb();
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("aargb");
frame.setSize(512, 512);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(demo.drawable);
frame.setVisible(true);
demo.drawable.requestFocusInWindow();
}
public void init(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
//
float values[] = new float[2];
gl.glGetFloatv(GL2.GL_LINE_WIDTH_GRANULARITY, values, 0);
System.out
.println("GL.GL_LINE_WIDTH_GRANULARITY value is " + values[0]);
gl.glGetFloatv(GL2.GL_LINE_WIDTH_RANGE, values, 0);
System.out.println("GL.GL_LINE_WIDTH_RANGE values are " + values[0]
+ ", " + values[1]);
gl.glEnable(GL2.GL_LINE_SMOOTH);
gl.glEnable(GL.GL_BLEND);
gl.glBlendFunc(GL2.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
gl.glHint(GL2.GL_LINE_SMOOTH_HINT, GL.GL_DONT_CARE);
gl.glLineWidth(1.5f);
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}
public void display(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
//
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glColor3f(0.0f, 1.0f, 0.0f);
gl.glPushMatrix();
gl.glRotatef(-rotAngle, 0.0f, 0.0f, 0.1f);
gl.glBegin(GL.GL_LINES);
gl.glVertex2f(-0.5f, 0.5f);
gl.glVertex2f(0.5f, -0.5f);
gl.glEnd();
gl.glPopMatrix();
gl.glColor3f(0.0f, 0.0f, 1.0f);
gl.glPushMatrix();
gl.glRotatef(rotAngle, 0.0f, 0.0f, 0.1f);
gl.glBegin(GL.GL_LINES);
gl.glVertex2f(0.5f, 0.5f);
gl.glVertex2f(-0.5f, -0.5f);
gl.glEnd();
gl.glPopMatrix();
gl.glFlush();
if (rotate)
rotAngle += 1f;
if (rotAngle >= 360f)
rotAngle = 0f;
}
public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) {
GL2 gl = drawable.getGL().getGL2();
GLU glu = new GLU();
gl.glViewport(0, 0, w, h);
gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glLoadIdentity();
if (w <= h) //
glu.gluOrtho2D(-1.0, 1.0, -1.0 * (float) h / (float) w, //
1.0 * (float) h / (float) w);
else
glu.gluOrtho2D(-1.0 * (float) w / (float) h, //
1.0 * (float) w / (float) h, -1.0, 1.0);
gl.glMatrixMode(GL2.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:
System.exit(0);
case KeyEvent.VK_R:
rotate = !rotate;
super.refresh();
default:
break;
}
}
public void keyReleased(KeyEvent key) {
}
public void dispose(GLAutoDrawable arg0) {
}
}
|