当前位置: 首页 > 文档资料 > JOGL 中文教程 >

绘图基础知识(Drawing Basics)

优质
小牛编辑
126浏览
2023-12-01

OpenGL API提供了绘制基本图形元素(如点,顶点,直线等)的基本方法。使用这些方法,您可以开发三角形,多边形和圆形等形状。 在2D和3D维度中。 本章将教您如何在Java程序中使用JOGL绘制基本行。

绘图对象

要访问特定于硬件和操作系统平台的程序以及使用其他语言(如C和C ++(本机应用程序)编写库),Java使用称为Java Native Interface (JNI)的编程框架。 JOGL在内部使用此接口来访问OpenGL函数,如下图所示。

JNI

GLEventListener接口的所有四个方法都有代码(java JOGL方法)在内部调用OpenGL函数。 这些JOGL方法的命名也类似于OpenGL的命名约定。 如果OpenGL中的函数名是glBegin() ,则将其用作gl.glBegin()

每当调用java JOGL的gl.glBegin()方法时,它就会在内部调用OpenGL的glBegin()方法。 这是在安装JOGL时在用户系统上安装本机库文件的原因。

The Display() Method

这是一个保存开发图形代码的重要方法。 它需要GLAutoDrawable接口对象作为其参数。

display()方法最初使用GL接口的对象获取OpenGL上下文(GL继承GLBase接口,该接口包含生成所有OpenGL上下文对象的方法)。 由于本教程是关于JOGL2的,让我们生成一个GL2对象。

以下代码段显示了如何生成GL2对象 -

//Generating GL object
GL gl = drawable.getGL();
GL gl = drawable.getGL();
//Using this Getting the Gl2 Object
//this can be written in a single line like
final GL2 gl = drawable.getGL().getGL2();

使用GL2接口的对象,可以访问该接口的成员,从而提供对OpenGL [1.0 ... 3.0]功能的访问。

划线

GL2接口包含大量方法,但这里讨论了三个主要的重要方法,即glBegin()glVertex()glEnd()

Sr.No.方法和描述
1

glBegin()

此方法开始绘制线条的过程。 它将预定义的字符串整数“GL_LINES”作为参数,它继承自GL接口。

2

glVertex3f()/glVertex2f()

此方法创建顶点,我们必须将坐标作为参数3f和2f传递,它们分别表示三维浮点坐标和二维浮点坐标。

3

glEnd()

结束了这条线

下面给出的是使用JOGL绘制基本线的程序 -

import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.JFrame;
public class Line implements GLEventListener {
   @Override
   public void display(GLAutoDrawable drawable) {
      final GL2 gl = drawable.getGL().getGL2();
      gl.glBegin (GL2.GL_LINES);//static field
      gl.glVertex3f(0.50f,-0.50f,0);
      gl.glVertex3f(-0.50f,0.50f,0);
      gl.glEnd();
   }
   @Override
   public void dispose(GLAutoDrawable arg0) {
      //method body
   }
   @Override
   public void init(GLAutoDrawable arg0) {
      // method body
   }
   public static void main(String[] args) {
      //getting the capabilities object of GL2 profile        
      final GLProfile profile = GLProfile.get(GLProfile.GL2);
      GLCapabilities capabilities = new GLCapabilities(profile);
      // The canvas
      final GLCanvas glcanvas = new GLCanvas(capabilities);
      Line l = new Line();
      glcanvas.addGLEventListener(l);
      glcanvas.setSize(400, 400);
      //creating frame
      final JFrame frame = new JFrame ("straight Line");
      //adding canvas to frame
      frame.getContentPane().add(glcanvas);
      frame.setSize(frame.getContentPane().getPreferredSize());
      frame.setVisible(true);
   }//end of main
}//end of classimport javax.media.opengl.GL2;
线