JOGL 基本形状
精华
小牛编辑
118浏览
2023-03-14
在前面的例子中,我们已经知道在 JOGL 中可以借助 GL_LINES 参数绘制任何类型的形状。但除此之外,JOGL 还包含各种其他参数,我们可以通过这些参数直接(即以更简单的方式)绘制特定的形状,例如三角形、四边形、多边形等。
JOGL 原始三角形 示例
在这个例子中,我们将看到如何在原始三角形参数(GL_TRIANGLES)的帮助下创建一个三角形。
package cn.xnip;
import javax.media.opengl.*;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.*;
public class Triangle implements GLEventListener {
@Override
public void init(GLAutoDrawable arg0) {
}
@Override
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glBegin(GL2.GL_TRIANGLES);
gl.glVertex2d(0, 0.5);
gl.glVertex2d(-0.5, -0.5);
gl.glVertex2d(0.5, -0.5);
gl.glEnd();
}
@Override
public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4) {
}
@Override
public void dispose(GLAutoDrawable arg0) {
}
public static void main(String[] args) {
final GLProfile gp = GLProfile.get(GLProfile.GL2);
GLCapabilities cap = new GLCapabilities(gp);
final GLCanvas gc = new GLCanvas(cap);
Triangle tr = new Triangle();
gc.addGLEventListener(tr);
gc.setSize(400, 400);
final JFrame frame = new JFrame("xnip.cn:JOGL Triangle");
frame.add(gc);
frame.setSize(500, 400);
frame.setVisible(true);
}
}
输出结果如下:
JOGL 原始四边形 示例
在这个例子中,我们将看到如何在原始四边形参数(GL_QUADS)的帮助下创建一个四边形。
package cn.xnip;
import javax.media.opengl.*;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.*;
public class JQuad implements GLEventListener {
@Override
public void init(GLAutoDrawable arg0) {
}
@Override
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glBegin(GL2.GL_QUADS);
gl.glVertex3f(0.0f, 0.5f, 0);
gl.glVertex3f(-0.5f, 0f, 0);
gl.glVertex3f(0f, -0.5f, 0);
gl.glVertex3f(0.5f, 0f, 0);
gl.glEnd();
}
@Override
public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4) {
}
@Override
public void dispose(GLAutoDrawable arg0) {
}
public static void main(String[] args) {
final GLProfile gp = GLProfile.get(GLProfile.GL2);
GLCapabilities cap = new GLCapabilities(gp);
final GLCanvas gc = new GLCanvas(cap);
JQuad jq = new JQuad();
gc.addGLEventListener(jq);
gc.setSize(400, 400);
final JFrame frame = new JFrame("xnip.cn:JOGL Primitive Quadrilateral");
frame.add(gc);
frame.setSize(500, 400);
frame.setVisible(true);
}
}
输出结果如下: